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

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

1回复

配置单元联接查询性能

我想将表A与B在A.id = B.id上连接起来,如下所示: 在这里,我的TABLEb被两个值GOP和LOP分区。 我还尝试对以下方法进行相同的查询: 任何人都可以说出哪种方法更好吗? 原因和原因或使第二个与第一个不同的原因。 请帮忙
1回复

配置单元查询错误

我想更新一个metastore表,我有一个.sh与: hive load data inpath '/user/cloudera/Divisas/Barril_Brent.csv; 但是,当终端执行配置单元时,不要接受下一条将更新表数据的指令 我曾想到过这样的事情: hive -
2回复

配置单元查询

我们有一个Hive表,如下所示: 我们希望看到如下输出: 对于每个日期,显示购买每种水果的客户的数量。 如果当天没有人购买水果,则将其替换为0代替NULL。 任何实现此目的的Apache查询都受到高度赞赏 更新:只有四种产品:苹果,香蕉,葡萄和橙子。 我们不希望找到不
1回复

优化配置单元查询

我正在尝试优化配置单元查询。 我已经将基本表分区并存储为ORC文件,如下所示。 我在上表中触发以下查询(包含500.000条记录)。 我得到的最终结果存储为json 。 整个交易大约需要35秒。 有什么方法可以减少我的时间。 也许有人会建议我使用其他框架而不是Hive。 这是
1回复

Hadoop配置单元查询

我在表中有这些类型的行,第一个是电影ID,第二个是电影标题,第三个是一个人给出的评分。 有不同的电影。 例如,并非所有人都是玩具总动员 。 它只是有限的。 我的问题是: 给评分最高的电影名称 因此,例如:如果有6个人给一部电影评分为1星,则总和为6。现在到另一部电影,另外
1回复

配置单元分区,带通配符

我是分区的新手。 假设我有下表 表mytable(mytime时间戳,myname字符串) 其中mytime列是这样的:year-month-day hour:min:sec.msec(例如,2014-12-05 08:55:59.3131) 我想基于mytime的年-月
1回复

配置单元并选择不匹配的记录

我有两个表,如表A,B,我需要选择A与B的不匹配记录(即A减去B)。 A有多列,B是单列(ID)。 我已经尝试过如下所示,但它花费了太多时间 而且我也尝试过 显示我错误的结果 请帮助我确定解决方案。 谢谢 。
1回复

AND子句无法在配置单元中使用

我有一个像idsfortime的表: 还有另一个具有以下各列的表: 上表的最后一列表示纪元时间。 我试图找出那些位于之间的速度(在以上表列2) epochtime表的idsfortime表和下面。 我正在使用以下查询: 但是,这不起作用。 请建议
1回复

配置单元填充子查询表

我正在使用Hive作为首选接口的Hadoop数据库。 我希望能够将多个SELECT语句组合到一个查询中(有点像UNION,但每个查询都填充不同的列)。下面的查询将在单个列中返回我需要的所有结果,但我希望能够使用每个查询来填充单个列。 任何有关如何完成此操作的帮助都将是很棒的-相当于VALUE
1回复

配置单元查询执行问题

当执行配置单元查询时,这是输出,想知道“ Map 1”和“ Reducer 2”,1和2是什么意思? 预先感谢林