当前位置:  开发笔记 > 运维 > 正文

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

如何解决《在ParquetData上使用Avro架构动态创建Hive外部表》经验,为你挑选了1个好方法。

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

我的尝试是使用以下DDL:

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');

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

SELECT * FROM parquet_test;

我收到以下错误:

java.io.IOException: org.apache.hadoop.hive.serde2.avro.AvroSerdeException: Expecting a AvroGenericRecordWritable

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



1> 小智..:

以下查询有效:

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';

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有