У меня есть данные в формате Avro в HDFS в файлах, например: /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
.
Я хотел бы иметь возможность отправлять исходные данные из всех этих разных папок [foldername]. Как сделать выбор рекурсивного ввода дальше в моих вложенных каталогах?