我在hive中有一个表sdh,它有100000行。当我执行命令时 select * from sdh
在cli上,将显示所有行
但是当我在beeline上通过hiveserver2运行它时,同样的命令挂起了
所有其他有1000多行的表都可以通过cli或beeline正常工作。
还有人面临类似的问题吗?
我从日志中发现了错误
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)
错误:检索下一行时出错(状态=,代码=0)
2条答案
按热度按时间xmq68pz91#
使用选项“--incremental=false”和beeline。否则,它会尝试同时将整个结果读入内存,如果结果对于可用内存来说太大,则会耗尽内存。
关于将此选项设为默认选项的更多讨论如下-https://issues.apache.org/jira/browse/hive-7224
fnx2tebb2#
请使用该选项
--incremental=true
把它放在-e
直线选项。对我来说就是这样。