Apache Drill可用于大数据的实时分析,引用一段介绍:
受到Google Dremel启发,Apache的Drill项目是对大数据集进行交互式分析的分布式系统。Drill并不会试图取代已有的大数据批处理框架(Big Data batch processing framework),如Hadoop MapReduce或流处理框架(stream processing framework),如S4和Storm。相反,它是要填充现有空白的——对大数据集的实时交互式处理
简单来说,Drill可接收SQL查询语句,然后后端从多个数据源例如HDFS、MongoDB等获取数据并分析产出分析结果。在一次分析中,它可以汇集多个数据源的数据。而且基于分布式的架构,可以支持秒级查询。
Drill在架构上是比较灵活的,它的前端可以不一定是SQL查询语言,后端数据源也可以接入Storage plugin来支持其他数据来源。这里我就实现了一个从HTTP服务获取数据的Storage plugin demo。这个demo可以接入基于GET请求,返回JSON格式的HTTP服务。源码可从我的Github获取:drill-storage-http
例子包括:
select name, length from http.`/e/api:search` where $p=2 and $q='avi'
select name, length from http.`/e/api:search?q=avi&p=2` where length > 0
实现
要实现一个自己的storage plugin,目前Drill这方面文档几乎没有,只能从已有的其他storage plugin源码入手,例如mongodb的,参考Drill子项目drill-mongo-storage。实现的storage plugin打包为jar放到jars目录,Drill启动时会自动载入,然后web上配置指定类型即可。
主要需要实现的类包括:
AbstractStoragePlugin
StoragePluginConfig
SchemaFactory
BatchCreator
AbstractRecordReader
AbstractGroupScan
AbstraceStoragePlugin
StoragePluginConfig用于配置plugin,例如:
{
"type" : "http",
"connection" : "http://xxx.com:8000",
"resultKey" : "results",
"enabled" : true
}
它必须是可JSON序列化/反序列化的,Drill会把storage配置存储到/tmp/drill/sys.storage_plugins中,例如windows下D:\tmp\dril

本文档介绍了如何实现一个Apache Drill的HTTP Storage Plugin,该插件允许 Drill 从返回 JSON 的 HTTP 服务中获取数据。文章详细讲解了实现过程,涉及AbstraceStoragePlugin、SchemaFactory、AbstractRecordReader等关键类的实现,并提到了Drill的查询优化和Calcite项目的作用。作者还分享了源码链接,并指出尽管Drill项目较新,扩展仍存在挑战。
最低0.47元/天 解锁文章
207

被折叠的 条评论
为什么被折叠?



