在Parquet Data上使用Avro架构动态创建Hive外部表

时间:2015-12-09 14:52:46

标签: hive avro parquet

我试图动态(不在Hive DDL中列出列名和类型)在镶木地板数据文件上创建一个Hive外部表。我有底层镶木地板文件的Avro架构。

我的尝试是使用以下DDL:

newline

使用正确的架构成功创建了我的Hive表,但是当我尝试读取数据时:

CREATE EXTERNAL TABLE parquet_test
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS PARQUET
LOCATION 'hdfs://myParquetFilesPath'
TBLPROPERTIES ('avro.schema.url'='http://myHost/myAvroSchema.avsc');

我收到以下错误:

SELECT * FROM parquet_test;

有没有办法成功创建和阅读Parquet文件,而没有在DDL中提及列名和类型列表?

1 个答案:

答案 0 :(得分:8)

以下查询有效:

CREATE TABLE avro_test ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe' STORED AS AVRO TBLPROPERTIES ('avro.schema.url'='myHost/myAvroSchema.avsc'); 

CREATE EXTERNAL TABLE parquet_test LIKE avro_test STORED AS PARQUET LOCATION 'hdfs://myParquetFilesPath';