我在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. AWS雅典娜:使用「文件夾」的名稱作爲分區
- 3. 將雅典娜和S3連接在同一個Cloudformation棧中
- 4. 如何創建雅典娜表
- 5. 如何從雅典娜過去一週獲得結果?
- 6. 具有多個位置的雅典娜表
- 7. 如何獲得雅典娜軟件打印條形碼?
- 8. AWS雅典娜S3存儲桶上有一些JSON文件
- 9. AWS雅典娜JSON格式失敗
- 10. 雅典娜JDBC輸出格式
- 11. 通過R連接到雅典娜
- 12. AWS雅典娜地圖查詢
- 13. 如何設置日期DDL在亞馬遜雅典娜
- 14. 用不同結構導入Hive中的多個文件
- 15. 雅典娜查詢返回列名作爲結果集
- 16. 如何devide一個字符串,每個空格REGEXP_EXTRACT(SQL-雅典娜)
- 17. 如何使用具有不同文件結構的Dart Polymer?
- 18. 亞馬遜雅典娜不解析雲端日誌
- 19. 你能在亞馬遜雅典娜創建視圖嗎?
- 20. 循環從層次結構的不同文件夾中讀取多個文件
- 21. 如何使用在另一個文件中.c文件中定義的結構
- 22. 在多個文件中使用結構體
- 23. 在多個cpp文件中使用類/結構體/聯合C++
- 24. AWS雅典娜從嵌套的JSON源平坦化數據
- 25. 雅典娜大小爲N的隨機樣本
- 26. 如何在結構中使用結構?
- 27. 如何在多個CssResource css文件中使用相同的@def?
- 28. 如何在另一個結構中使用一個結構?
- 29. 如何在多個類中定義相同的命名結構?
- 30. 如何在使用不同目錄結構的多個用戶協作時使用R中的source()?
這取決於您的文件格式,SerDe是否可以適應讀取它。你能解釋你的文件格式嗎? JSON,CSV,ORC? –
我正在使用json文件 – Prakash
請從每個文件 –