2017-06-23 48 views
1

我在使用Sqoop導入的HDFS中有一些數據。數據導入爲ORC,壓縮爲Snappy。指定序列化程序的ORC不起作用

我想用下面的DDL語句在這個數據之上創建一個表。但是,我收到以下錯誤。

失敗:SemanticException [錯誤10043]:列的任一列表或 自定義序列應該通過定義ROW FORMAT SERDE and STORED AS INPUTFORMAT and OUTPUTFORMAT

DDL指定

不過,我定義了 「自定義序列」聲明:

CREATE EXTERNAL TABLE test_db.my_table_orc 
ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' 
LOCATION '/hdfs/app/DL/ORC_DATA_LOCATION' 
tblproperties ("orc.compress"="SNAPPY"); 

回答

1

Hive目前無法支持在不指定DDL列列表的情況下創建ORC表。 ORC文件確實包含有關列的元數據,所以如果您不確定給定的ORC文件的列,那麼您可以運行ORC File Dump Utility來獲取它。

1
  1. 定義日表格的列。
  2. 不需要輸入/輸出格式。 stored as orc就夠了。
+0

感謝您的回答。手動定義列需要很長時間。我的桌子很寬,很多列:) – user2159301

+1

https://community.hortonworks.com/questions/7042/orc-table-creation-without-column-details.html –