提高apache配置单元性能

cnjp1d6j  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(282)

我的hdfs接收器中有5gb的数据。当我在配置单元上运行任何查询时,都需要10-15分钟才能完成。我跑步时的行数,

select count(*) from table_name

是3880900。我的虚拟机有4.5 gb内存,运行在mbp 2012上。我想知道在表中创建索引是否能提高性能。还有没有其他方法告诉配置单元只使用这么多的数据或行,以便更快地获得结果?即使查询是针对较少的数据子集运行的,我也可以,至少是为了获得一个结果。

ibps3vxo

ibps3vxo1#

根据您查询的数据,您可以通过使用不同的文件格式(如orc、parquet)获得收益。您要查询什么样的数据,是结构化数据还是非结构化数据?你想执行什么样的查询?如果是结构化数据,您还可以在hadoop解决方案上使用其他sql(如infinib、presto、impala等)来获得收益。。。
我是英菲尼德的建筑师
http://infinidb.co
像infinib、impala等hadoop解决方案上的sql通过它们加载数据来工作,它们将在其中执行计算、优化等。。。使数据查询更快。这对于交互式分析查询非常有帮助,尤其是与hive之类的查询相比。
也就是说,您正在处理5gb的数据(但数据总是在增长!总有一天会成为tbs),它非常小,所以您仍然可以使用一些不适用于高性能查询的工具。使用hive的最佳解决方案是查看数据的状态,看看orc或parquet是否有助于您的查询(列格式适合于分析查询)。
对于对hdfs数据执行sql查询,hive总是一个较慢的选项。hortonworks和他们的stinger计划正在使它变得更好,你可能想看看。
http://hortonworks.com/labs/stinger/

0kjbasz6

0kjbasz62#

如果您对列的一个子集感兴趣,这个用例听起来很适合orc,parquet。带有hive0.12的orc附带了ppd,它可以帮助您在运行查询时丢弃块,同时使用它为每列存储的元数据。
我们在hive上做了一个实现,在orc文件的元数据索引中支持bloom过滤器,这使性能提高了5-6倍。
为执行的查询启动的Map器/缩减器任务的平均数量是多少?调整一些参数肯定会有帮助。

nzk0hqpo

nzk0hqpo3#

是的,索引应该会有帮助。然而,获取数据的子集(使用limit)并没有真正的帮助,因为hive仍然会在限制输出之前扫描整个数据。
您可以尝试使用rcfile/orcfile格式以获得更快的结果。在我的实验中,基于rcfile的表执行查询的速度大约是基于textfile/sequence文件表的10倍。

相关问题