2

我有多个 avro 文件,每个文件中都有一个 STRING。每个 avro 文件都是一行。如何编写配置单元表以使用位于单个目录中的所有 avro 文件。每个文件都有一个很大的数字,因此我也没有任何我可以关联的 json 类型的模式。当我说 schema less 时,我可能是错的。但是我找不到让蜂巢理解这些数据的方法。这可能很简单,但我迷路了,因为我尝试了许多不同的方法但没有成功。我创建了指向 json 模式的表作为 avro uri,但这里不是这种情况。更多上下文文件是使用 crunch api 编写的

final Path outcomesVersionPath = ...
pipeline.write(fruit.keys(), To.avroFile(outcomesVersionPath));

我尝试了以下创建表但未正确读取数据的查询

CREATE EXTERNAL TABLE test_table
ROW FORMAT
SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///somePath/directory_with_Ids'
4

2 回答 2

0

如果您的数据集只有一个STRING字段,那么您应该能够data通过将 DDL 更改为:

CREATE EXTERNAL TABLE test_table
(data STRING)
ROW FORMAT
SERDE 'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS
INPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
LOCATION 'hdfs:///somePath/directory_with_Ids'

然后读取数据:

SELECT data FROM test_table;
于 2015-03-09T02:26:15.803 回答
0

使用 avro 实用程序 jar 在此处查看任何给定二进制文件的 avro 架构!然后在创建表时链接模式文件。

于 2015-03-09T19:32:19.203 回答