我在s3存儲桶目錄中有多個文件(所有文件都在同一個目錄中)。所有文件都有不同的結構,如果一個文件有4列,那麼第二個文件有6個不同的列。 我如何使用這些文件創建雅典娜表?如何在雅典娜中使用不同結構的多個文件
回答
如果您的文件包含不同的數據,則需要將它們定義爲不同的外部表(每個表都有自己的CREATE EXTERNAL TABLE
語句)。
然後,您可以通過JOIN跨多個表運行查詢。
以下情形。
data1.json:
{"a":"data1","b":"data2"}
data2.json
{"c":"data3","d":"data4"}
您可以創建下表:
create external table data1 (
a string,
b string
)
ROW FORMAT serde 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://bucket/x';
create external table data2 (
c string,
d string
)
ROW FORMAT serde 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://bucket/x';
現在,您可以查詢單獨的文件,通過單獨的定義表。唯一需要注意的是,不同的文件類型將在結果中生成空條目。
select * from data1 where a is not null;
select * from data2 where c is not null;
如果data1.json和data2.json都在同一個目錄下(比如說s3: /桶/ DIR /)?我將如何在創建表格查詢中提及位置。它是一個有效的scenerio,或者這兩個文件必須存在於不同的目錄中? – Prakash
在技術上,Athena可以瀏覽目錄中的所有文件,但是它會爲不匹配文件條目創建空行。可以過濾查詢中的空行。另一方面,每個文件類型都有一個目錄會更清晰,但這並不總是可行的。因此,在1個目錄上創建2個表是最好的選擇。您可以根據需要使用「LOCATION's3:// bucket/dir'」這樣的語句爲一個目錄創建儘可能多的表。 –
我相信這對於AWS Athena/Presto來說目前是不可能的(請告訴我,否則!)。
雅典娜表的外部位置(始終爲EXTERNAL TABLE
)必須是一個目錄。
s3://mybucket/folder/table/file_a
和s3://mybucket/folder/table/file_b
不同結構會導致SCHEMA_MISMATCH
。
雅典娜希望表格格式爲s3://mybucket/folder/table1/
和s3://mybucket/folder/table2/
。
更新:
從AWS支持一段對話:
對於您必須將文件移動每桌單獨的文件夾明智其他Athena總會考慮所有文件的第一條路徑要求是爲一張桌子。
- 1. 使用雅典娜或DynamoDB
- 2. 雅典娜
- 3. AWS雅典娜:使用「文件夾」的名稱作爲分區
- 4. 將雅典娜和S3連接在同一個Cloudformation棧中
- 5. 如何創建雅典娜表
- 6. 如何從雅典娜過去一週獲得結果?
- 7. 具有多個位置的雅典娜表
- 8. 在多個文件中使用結構
- 9. 亞馬遜雅典娜和壓縮的S3文件
- 10. 如何獲得雅典娜軟件打印條形碼?
- 11. AWS雅典娜S3存儲桶上有一些JSON文件
- 12. AWS雅典娜地圖查詢
- 13. AWS雅典娜JSON格式失敗
- 14. 雅典娜JDBC輸出格式
- 15. 通過R連接到雅典娜
- 16. 如何設置日期DDL在亞馬遜雅典娜
- 17. 如何提高從雅典娜s3數據的查詢性能
- 18. 用不同結構導入Hive中的多個文件
- 19. 雅典娜查詢返回列名作爲結果集
- 20. iphone - 如何在不同的文件中調用結構
- 21. 如何devide一個字符串,每個空格REGEXP_EXTRACT(SQL-雅典娜)
- 22. 如何使用具有不同文件結構的Dart Polymer?
- 23. 亞馬遜雅典娜不解析雲端日誌
- 24. JS OOP - 結構在多個文件中
- 25. 你能在亞馬遜雅典娜創建視圖嗎?
- 26. 循環從層次結構的不同文件夾中讀取多個文件
- 27. 如何使用在另一個文件中.c文件中定義的結構
- 28. 在多個.h文件中使用typedef結構
- 29. 在多個cpp文件中使用類/結構體/聯合C++
- 30. 在多個文件中使用結構體
這取決於您的文件格式,SerDe是否可以適應讀取它。你能解釋你的文件格式嗎? JSON,CSV,ORC? –
我正在使用json文件 – Prakash
請從每個文件 –