Hive:对于通过HiveServer2超过5000行的表,select * from table失败

时间:2014-12-12 16:05:02

标签: hadoop hive

我在Hive中有一个表sdh,它有100000行。 当我执行命令

时 在CLI上

select * from sdh,显示所有行

但是当我通过直线上的HiveServer2运行它时,同样的命令就会挂起

所有其他具有1000多行的表通过CLI或直线工作正常。

其他人面临类似的问题?

我从日志中得到错误

org.apache.thrift.TApplicationException: Internal error processing FetchResults
    at org.apache.thrift.TApplicationException.read(TApplicationException.java:108)
    at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:71)
    at org.apache.hive.service.cli.thrift.TCLIService$Client.recv_FetchResults(TCLIService.java:489)
    at org.apache.hive.service.cli.thrift.TCLIService$Client.FetchResults(TCLIService.java:476)
    at org.apache.hive.jdbc.HiveQueryResultSet.next(HiveQueryResultSet.java:285)
    at org.apache.hive.beeline.BufferedRows.<init>(BufferedRows.java:42)
    at org.apache.hive.beeline.BeeLine.print(BeeLine.java:1541)
    at org.apache.hive.beeline.Commands.execute(Commands.java:741)
    at org.apache.hive.beeline.Commands.sql(Commands.java:657)
    at org.apache.hive.beeline.BeeLine.dispatch(BeeLine.java:763)
    at org.apache.hive.beeline.BeeLine.begin(BeeLine.java:630)
    at org.apache.hive.beeline.BeeLine.mainWithInputRedirection(BeeLine.java:363)
    at org.apache.hive.beeline.BeeLine.main(BeeLine.java:346)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:197)

错误:检索下一行时出错(state =,code = 0)

2 个答案:

答案 0 :(得分:0)

使用直线选项“--incremental = false”。否则,它会尝试同时将整个结果读入内存,如果结果对于可用内存来说太大,则会耗尽内存。

有关将此选项设为默认选项的更多讨论,请点击此处 - https://issues.apache.org/jira/browse/HIVE-7224

答案 1 :(得分:0)

请使用选项--incremental=true并将其放在直线的-e选项之前。对我而言,就是这样。