我试图动态(不在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中提及列名和类型列表?
答案 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';