【发布时间】:2014-08-17 18:09:23
【问题描述】:
我在 HDFS 中的文件路径中有 Avro 格式的数据,例如:/data/logs/[foldername]/[filename].avro。我想在所有这些日志文件上创建一个 Hive 表,即/data/logs/*/* 形式的所有文件。 (它们都基于相同的 Avro 架构。)
我正在使用标志 mapred.input.dir.recursive=true 运行以下查询:
CREATE EXTERNAL TABLE default.testtable
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://.../data/*/*'
TBLPROPERTIES (
'avro.schema.url'='hdfs://.../schema.avsc')
除非我将 LOCATION 更改为更少嵌套,否则表格最终为空,即具有特定文件夹名称的 'hdfs://.../data/[foldername]/'。这对LOCATION 的嵌套路径较少,没有问题。
我希望能够从所有这些不同的 [文件夹名称] 文件夹中获取数据。 如何使递归输入选择在我的嵌套目录中走得更远?
【问题讨论】:
标签: hadoop hive avro create-table hive-configuration