HDFS接收器中有5GB数据。 当我在Hive上运行任何查询时,需要10到15分钟才能完成。 运行时得到的行数,

select count(*) from table_name

是3,880,900。 我的VM有4.5 GB的内存,它在MBP 2012上运行。我想知道在表中创建索引是否会改善性能。 还有其他方法可以告诉配置单元仅使用大量数据或行以更快地获得结果吗? 我没关系,即使查询是针对较少的数据子集运行的,至少也可以使人对结果有所了解。

===============>>#1 票数:0

是的,建立索引应该会有所帮助。 但是,获取数据子集(使用限制)并没有太大帮助,因为配置单元仍会在限制输出之前扫描整个数据。

您可以尝试使用RCFile / ORCFile格式以获得更快的结果。 在我的实验中,基于RCFile的表执行查询的速度大约比基于textfile / sequence文件的表执行查询的速度快10倍。

===============>>#2 票数:0

根据查询的数据,可以使用ORC,Parquet等不同的文件格式来获取收益。 您要查询哪种数据,是结构化数据还是非结构化数据? 您要执行哪种查询? 如果是结构化数据,则还可以通过在Hadoop解决方案上使用其他SQL(例如InfiniDB,Presto,Impala等)来获得收益。

我是InfiniDB的架构师
http://infinidb.co
Hadoop解决方案(例如InfiniDB,Impala等)上的SQL通过您通过它们加载数据来进行工作,它们将在该处执行计算,优化等……以使数据查询速度更快。 这对于交互式分析查询很有帮助,特别是与Hive之类的东西相比。

话虽如此,您正在使用5GB的数据(但数据总是在增长!总有一天可能是TB),这非常小,因此您仍然可以在某些不用于高性能查询的工具中工作。 使用Hive最好的解决方案是查看数据的状态,看看ORC或Parquet是否可以使您的查询受益(列格式非常适合分析查询)。

Hive始终将是较慢的选项之一,尽管它可以对HDFS数据执行SQL查询。 Hortonworks与他们的Stinger计划一起使它变得更好,您可能需要检查一下。
http://hortonworks.com/labs/stinger/

===============>>#3 票数:0

如果您对列的子集感兴趣,该用例听起来很适合ORC,Parquet。 Hive 0.12的ORC附带了PPD,它将帮助您在运行查询时使用存储在每一列的元数据来丢弃数据块。

我们在蜂巢的顶部进行了一个实现,以支持ORC文件的元数据索引中的Bloom过滤器,从而使性能提高了5-6倍。

为您执行的查询启动的Mapper / Reducer任务平均数量是多少? 调整一些参数绝对可以帮助您。

  ask by NEO translate from so

未解决问题?本站智能推荐: