我按照蜂巢查询运行
在(table_line_n_passed.chromosome_number=table_line_c_passed.chromosome_number)上将表table_llv_N_C作为选择table_line_n_passed.chromosome_number、table_line_n_passed.position、table_line_c_passed.id从table_line_n_passed连接table_line_c_passed创建
并得到跟随误差...... org.apache.hadoop.hive.ql.metadata.HiveException: Hive Runtime Error while processing row (tag=1) {"key":{"joinkey0":"12"},"value":{"_col2":"."},"alias":1} at org.apache.hadoop.hive.ql.exec.ExecReducer.reduce(ExecReducer.java:258) ... 7 more Caused by: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.hive.ql.metadata.HiveException: org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /tmp/hive-root/hive_2015-03-09_10-03-59_970_3646456754594156815-1/_task_tmp.-ext-10001/_tmp.000000_0 could only be replicated to 0 nodes instead of minReplication (=1). There are 2 datanode(s) running and no node(s) are excluded in this operation. ......
根本原因可能是HDFS集群中缺少磁盘空间。有关磁盘空间的详细信息包括
hdfs dfs -df -h
Filesystem Size Used Available Use%
hdfs://x.y.ab.com:8020 159.7 G 21.9 G 110.7 G 14%。
具有4767409行和1.1G大小的table_line_n_passed。
同样,具有4717082行和1.0G大小的table_line_c_passed。
Hive真的需要这么大的空间(比可用的空闲空间110 G)来处理数据吗?如何计算在运行查询之前需要多少空闲空间,如何在可用的空闲空间内运行查询。
PS:如果我在上面的查询中使用极限10000,它的运行情况很好。
执行计划
EXPLAIN create table table_llv_N_C as select table_line_n_passed.chromosome_number,table_line_n_passed.position,table_line_c_passed.id from table_line_n_passed join table_line_c_passed on (table_line_n_passed.chromosome_number=table_line_c_passed.chromosome_number);
好的
抽象语法树:
(TOK_CREATETABLE (TOK_TABNAME table_llv_N_C) TOK_LIKETABLE (TOK_QUERY (TOK_FROM (TOK_JOIN (TOK_TABREF (TOK_TABNAME table_line_n_passed)) (TOK_TABREF (TOK_TABNAME table_line_c_passed)) (= (. (TOK_TABLE_OR_COL table_line_n_passed) chromosome_number) (. (TOK_TABLE_OR_COL table_line_c_passed) chromosome_number)))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (. (TOK_TABLE_OR_COL table_line_n_passed) chromosome_number)) (TOK_SELEXPR (. (TOK_TABLE_OR_COL table_line_n_passed) position)) (TOK_SELEXPR (. (TOK_TABLE_OR_COL table_line_c_passed) id))))))
STAGE DEPENDENCIES:
(Stage-1 is a root stage
Stage-0 depends on stages: Stage-1
Stage-4 depends on stages: Stage-0
Stage-2 depends on stages: Stage-4
阶段计划:阶段-1地图减少别名->映射操作符树: table_line_c_passed TableScan别名: table_line_c_passed减少输出操作符键表达式: expr: chromosome_number类型: string排序顺序:+Map-减少分区列: expr: chromosome_number类型: string标记:1值表达式: expr: id类型: string table_line_n_passed TableScan别名: table_line_n_passed减少输出操作符键表达式: expr: chromosome_number类型: string排序顺序:+Map-减少分区列: expr: chromosome_number类型: string标记:0值表达式: expr: chromosome_number类型: string :位置类型: Inner : Join操作符条件映射:内部连接0到1条件表达式:0 {VALUE._col0} {VALUE._col1} 1 {VALUE._col2} handleSkewJoin: false outputColumnNames:_col0,_col1,_col14选择操作符表达式: expr:_col0类型: string:_col1类型: int:_col14类型::_col0,_col1,压缩的_col2文件输出操作符: false GlobalTableId: 1表:输入格式: org.apache.hadoop.mapred.TextInputFormat输出格式:org.apache.hadoop.mapred.TextInputFormat名称: bright.table_llv_N_C 阶段:阶段-0移动操作符文件: hdfs目录:真正的目标: hdfs://cheetah.xxx.yyyy.in:8020/user/hive/warehouse/bright.db/table_llv_n_c 阶段:第4阶段创建表操作符:创建表列: chromosome_number字符串、位置int、id字符串(如果不存在):false输入格式: org.apache.hadoop.mapred.TextInputFormat #存储桶:-1输出格式: table_llv_N_C名称:table_llv_N_C isExternal: false 阶段:第2阶段-Aggr算子
时间: 0.146秒
发布于 2015-03-10 06:29:48
转到以下链接:https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties
找这个标签。或者在页面上搜索内存使用情况,以便轻松到达那里。
hive.map.aggr.hash.force.flush.memory.threshold也可参考此标记或转到第二次搜索内存使用情况。
hive.mapjoin.localtask.max.memory.usagehttps://stackoverflow.com/questions/28957347
复制相似问题