ORC 指定序列化器不工作

ORC specifying serializer is not working

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

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

FAILED: SemanticException [Error 10043]: Either list of columns or a custom serializer should be specified

但是,我通过定义 ROW FORMAT SERDE and STORED AS INPUTFORMAT and OUTPUTFORMAT

来定义 "custom serializer"

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. 定义 table 的列。
  2. 不需要input/output格式。 stored as orc 就够了。

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