我想对HDFS中的数据进行一些"近实时"数据分析(类似OLAP).
我的研究表明,与Apache Hive相比,上述三个框架报告了显着的性能提升.有没有人对其中任何一个有一些实际经验?不仅涉及性能,还涉及稳定性?
动机:我想将数据加载到Apache Drill中.我知道Drill可以处理JSON输入,但我想看看它如何在Parquet数据上执行.
有没有办法在没有先将数据加载到Hive等中然后使用其中一个Parquet连接器生成输出文件的情况下执行此操作?
我尝试使用apache-drill运行简单的连接聚合查询,速度不是很好.我的测试查询是:
SELECT p.Product_Category, SUM(f.sales)
FROM facts f
JOIN Product p on f.pkey = p.pkey
GROUP BY p.Product_Category
Run Code Online (Sandbox Code Playgroud)
事实有大约422,000行,产品有600行.分组返回4行.
首先,我在SqlServer上测试了这个查询,并在大约150ms内得到了一个结果.
使用钻取我首先尝试直接连接到SqlServer并运行查询,但这很慢(大约5秒).
然后我尝试将表保存到json文件并从中读取,但这甚至更慢,所以我尝试了镶木地板文件.
我在第一次运行中得到了结果,大约3秒钟.下次运行大约900ms,然后稳定在大约500ms.
从阅读来看,这没有任何意义,钻孔应该更快!我试过"REFRESH TABLE METADATA",但速度没有变化.
我通过钻取命令行在Windows上运行它.
如果我需要一些额外的配置或什么的任何想法?
谢谢!
我需要开发一个应用程序,可以Oracle, Excel, Microsoft Sql Server
使用一个来从多个数据源(等等)获取数据SQL query
.例如:
SELECT o.employeeId, count(o.orderId)
FROM employees@excel e. customers@microsoftsql c, orders@oracle o
WHERE o.employeeId = e.employeeId and o.customerId = c.customerId
GROUP BY o.employeeId;
Run Code Online (Sandbox Code Playgroud)
这个sql和数据源必须由java程序动态更改.我的客户希望在我的应用程序的Web界面sql-like query
中同时编写和运行不同的数据库和存储group by, having, count, sum
.其他要求是性能和重量轻.
我找到了这种方式(我看到了什么缺点,如果我错了,请修理我):
Apache Spark(缺点:重型解决方案,对于BigData更好,如果你需要获取最新的信息而不在Spark中缓存它,则会很慢),
在SQL Server分布式查询(甲骨文的数据库链接,微软SQL服务器的链接服务器,Excel的电源查询) - 缺点:与Excel的工作问题,通过动态java程序和问题变化的数据源,
Prestodb(缺点:重型解决方案,对BigData更好),
Apache Drill(缺点:非常年轻的解决方案,一些问题,没有最新的odbc驱动程序和工作时的一些错误),
Apache Calcite(Apache Drill使用的ligth框架, 缺点:非常年轻的解决方案),
手动从数据源加入(缺点:开发正确连接的很多工作,在结果集中"分组",找到最佳执行计划等)
也许,你知道其他任何方式(使用 …
我对Apache Spark和Spark-SQL有一些了解.最近我发现了Apache Drill项目.你能描述一下他们之间最显着的优势/差异吗?我已经阅读过 Fast Hadoop Analytics(Cloudera Impala vs Spark/Shark vs Apache Drill), 但这个话题对我来说还不清楚.
我想扩展Apache Drill Mongo存储插件来推送INNER JOIN.因此我想重写INNER JOIN
为mongo聚合管道.
我们如何开始在Apache Drill中实现重写.
这是一个SQL示例:
SELECT *
FROM `mymongo.db`.`test` `test`
INNER JOIN `mymongo.db`.`test2` `test2`
ON (`test`.`id` = `test2`.`fk`)
WHERE `test2`.`date` = '09.05.2017'
Run Code Online (Sandbox Code Playgroud)
我已经找到了倒推的WHERE
在蒙戈存储插件条款.但我仍然在努力做同样的事情INNER JOINS
.构造器public class MongoPushDownInnerJoinScan extends StoragePluginOptimizerRule
看起来怎么样?我必须实现哪个MongoGroupScan
(AbstractGroupScan
)的等价物?任何帮助将非常感谢.
我正在尝试使用Apache Drill查询Cassandra.我能找到的唯一连接器是:http: //www.confusedcoders.com/bigdata/apache-drill/sql-on-cassandra-querying-cassandra-via-apache-drill
然而,这不构建.它提出了一个未找到工件的错误.我还有另一个更熟悉这些工具的开发人员,但他也没有运气.
我试过联系我引用的插件的开发者,但博客不起作用,不会让我发表评论.有没有人有这个插件工作(如果是这样?)或是否有另一个插件或方法,我可以用来连接apache钻到Cassandra?如果有人能告诉我如何连接执行一个简单的SQL查询,将非常感激.
在整个Apache Drill的Wiki中,我只能看到通过SqlLine客户端运行的查询.除了REST API之外,是否有任何编程方式在Drill中运行查询?任何样品或指针?
或者它是否与使用JDBC驱动程序运行SQL查询等效?
我想通过编程接口访问Drill.Apache Drill文档提到了它的JAVA和C++库供客户端连接,但没有提供相同的文档或示例.
http://drill.apache.org/faq/#what-clients-are-supported?
http://drill.apache.org/docs/architecture-introduction/#drill-clients
我能在论坛/文档中找到的最接近的东西是通过drill-JDBC驱动程序连接.但它违背了我想要做的目的.有没有人知道我在哪里可以找到更多关于这些API的信息,如果它们确实在那里?