我在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
请从每个文件 –