指定序列化程序的ORC不起作用

时间:2017-06-23 17:56:08

标签: hadoop hive cloudera hiveql orc

我在HDFS中有一些使用Sqoop导入的数据。数据作为ORC导入,压缩是Snappy。

我正在尝试使用以下DDL语句在此数据之上创建一个表。但是,我收到以下错误。

  

FAILED:SemanticException [错误10043]:列列表或a   应指定自定义序列化程序

但是,我通过定义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");

2 个答案:

答案 0 :(得分:1)

  1. 定义表格的列。
  2. 无需输入/输出格式。 stored as orc就够了。

答案 1 :(得分:1)

Hive当前不支持在未指定DDL中的列列表的情况下创建ORC表。 ORC文件确实包含有关列的元数据,因此如果您不确定给定的ORC文件的列,则可以运行ORC File Dump Utility来获取它。