2017-06-23 43 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 –