簡體   English   中英

如何在Hive嵌入式模式下運行包含“ select count(*)”和“ group by”子句的Hive Sql查詢?

[英]How to run Hive Sql query's containing “select count(*)” and “group by” clauses in Hive embedded mode?

如何在Hive嵌入式模式下運行此查詢(1)

select product,count(*) as cnt from hive_bigpetstore_etl group by product  

在Maven控制台中,我收到一個InvocationTargetException異常

在Hive日志文件中,我發現

java.lang.Exception: java.lang.NullPointerException
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:354)
Caused by: java.lang.NullPointerException
at org.apache.hadoop.hive.ql.exec.Utilities.setColumnTypeList(Utilities.java:2033)
at       org.apache.hadoop.hive.ql.io.HiveInputFormat.pushFilters(HiveInputFormat.java:351)
at     org.apache.hadoop.hive.ql.io.HiveInputFormat.pushProjectionsAndFilters(HiveInputFormat.java:432)
at     org.apache.hadoop.hive.ql.io.HiveInputFormat.pushProjectionsAndFilters(HiveInputFormat.java:374)
at     org.apache.hadoop.hive.ql.io.CombineHiveInputFormat.getRecordReader(CombineHiveInputFormat.java:540)
at org.apache.hadoop.mapred.MapTask$TrackedRecordReader.<init>(MapTask.java:191)
at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:412)
at org.apache.hadoop.mapred.MapTask.run(MapTask.java:366)
at org.apache.hadoop.mapred.LocalJobRunner$Job$MapTaskRunnable.run(LocalJobRunner.java:223)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

這是輸入數據中的典型行

BigPetStore,storeCode_AK,1 russell,baird,Sun Dec 21 11:57:31 PST 1969,20.1,antelope-caller

數據成功加載到表中,就好像我將(1)更改為(2)

`select* from hive_bigpetstore_etl`  

它返回所有數據的正確ResultSet

我已經檢查了一切都在類路徑上,沒有異常,例如找不到類,設置了蜂巢和hadoop home env變量,並在我針對獨立的Hive / Thrift查詢(1)運行(1)的情況下使用printenv進行了檢查沒有例外,我僅在嵌入式模式下獲得例外。

如何運行select count(*)group by

子句處於Hive嵌入式模式?

看從branch-0.11的蜂巢代碼:

2023   public static void setColumnTypeList(JobConf jobConf, Operator op) {
2024     RowSchema rowSchema = op.getSchema();
2025 :    if (rowSchema == null) {
2026       return;
2027     }
2028     StringBuilder columnTypes = new StringBuilder();
2029     for (ColumnInfo colInfo : rowSchema.getSignature()) {
2030       if (columnTypes.length() > 0) {
2031         columnTypes.append(",");
2032       }
2033 ----------> columnTypes.append(colInfo.getType().getTypeName());
2034     }
2035     String columnTypesString = columnTypes.toString();
2036     jobConf.set(serdeConstants.LIST_COLUMN_TYPES, columnTypesString);
2037   }

可能的答案是由於某種原因,colInfo.getType()返回null。 然后問題變成“為什么”。 為問題添加更多顏色(即,您可以使用任何count(*)查詢重現此錯誤)可能對此有所啟發。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM