如何基于包含模式的avro文件构建Avro Hive表?

时间:2018-03-25 17:51:18

标签: hive schema avro

我们有一个Avro格式的数据集,每个Avro文件中都有架构。

我想在这些文件之上构建Hive表,

我从社区中提出的一个旧问题中得到了以下建议:

创建外部表sampe_table存储为AVRO位置' hdfs:/// user / hive /;

但每当我尝试它时,我总会得到错误:

 java.lang.Exception: java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: MetaException(message:org.apache.hadoop.hive.serde2.SerDeException Encountered AvroSerdeException determining schema. Returning signal schema to indicate problem: Neither avro.schema.literal nor avro.schema.url specified, can't determine table schema)

有什么建议吗?或者您是否知道任何可以从文件中拆分Schema的在线工具?

1 个答案:

答案 0 :(得分:1)

首先生成avsc文件并使用该文件创建表

create external table myavro 
stored as avro 
location '/user/cloudera/myavro'
tblproperties('avro.schema.url' = 'file:///home/cloudera/myavsc.avsc')

要从现有的avro数据文件生成avsc,请使用avro-tools,就像这样

avro-tools getschema your_avro_file