我在HDFS中的文件路徑中具有Avro格式的數據,例如:/data/logs/[foldername]/[filename].avro
。我想在所有這些日誌文件上創建一個Hive表,即所有格式爲/data/logs/*/*
的文件。 (他們都基於相同的Avro的模式。)Hive使用來自嵌套子目錄的輸入創建表格
我運行下面的查詢與標誌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
的嵌套路徑不起任何作用。
我希望能夠從所有這些不同的[文件夾名稱]文件夾中獲取數據。 如何使我的嵌套目錄中的遞歸輸入選擇更進一步?
'hive.input.dir.recursive'? 'hive.supports.subdirectories'?似乎你已經從其他(錯誤)答案中複製了它。我建議你做一些研究和測試 –
@Dudu Markovitz。我已經在Hive 1.2.1上測試過了。這很好。 Hive支持子目錄。也許不是所有這些設置都是必要的,但是這對我有用。 – leftjoin
它不僅僅是不必要的參數,這使得這個答案本身不好,它是不存在的參數。此外,當hive.conf.validation設置爲true時,使用不存在的參數會拋出異常,因爲Hive 0.14是默認值。 https://issues.apache.org/jira/browse/HIVE-7211 –