Mam dane w formacie Avro w HDFS w ścieżkach plików takich jak: /data/logs/[foldername]/[filename].avro
. Chcę utworzyć tabelę Hive nad wszystkimi tymi plikami dziennika, tj. Wszystkie pliki w postaci /data/logs/*/*
. (Są one oparte na tym samym schemacie Avro.)Hive utwórz tabelę z wejściami z zagnieżdżonych podkatalogów
biegnę poniższego zapytania z flagą 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')
Tabela kończy się pusty, chyba że zmieni LOCATION
być mniej zagnieżdżone, tj. Być 'hdfs://.../data/[foldername]/'
z pewną nazwą foldername. To działało bez problemu z mniej zagnieżdżoną ścieżką dla LOCATION
.
Chciałbym móc pobierać dane ze wszystkich różnych folderów [foldername]. W jaki sposób uczynić rekursywny wybór wejścia pójść dalej w moich zagnieżdżonych katalogów?
'hive.input.dir.recursive'? 'hive.supports.subdirectories'? Wygląda na to, że skopiowałeś go z innych (błędnych) odpowiedzi. Sugeruję wykonanie pewnych badań i testów –
@Dudu Markovitz. Przetestowałem to na Hive 1.2.1. Działa to świetnie. Hive obsługuje podkatalogi. Może nie wszystkie z tych ustawień są potrzebne, ale to działa dla mnie. – leftjoin
To nie tylko niepotrzebne parametry, które powodują, że ta odpowiedź jest zła, to nieistniejące parametry. ponadto użycie nieistniejących parametrów generuje wyjątki od Hive 0.14, gdy "hive.conf.validation" jest ustawione na true, co jest domyślne. https://issues.apache.org/jira/browse/HIVE-7211 –