AWS雅典娜S3存储桶上有一些JSON文件
问题描述:
试用AWS Athena。我试图从一个S3桶具有文件结构,像这样创建一个表:AWS雅典娜S3存储桶上有一些JSON文件
my-bucket/
my-bucket/group1/
my-bucket/group1/entry1/
my-bucket/group1/entry1/data.bin
my-bucket/group1/entry1/metadata
my-bucket/group1/entry2/
my-bucket/group1/entry2/data.bin
my-bucket/group1/entry2/metadata
...
my-bucket-group2/
...
只有metadata
文件是JSON文件。每一个看起来是这样的:
{
"key1": "value1",
"key2": "value2",
"key3": n
}
所以我试图创建一个表:
CREATE EXTERNAL TABLE example (
key1 string,
key2 string,
key3 int
)
ROW FORMAT serde 'org.apache.hive.hcatalog.data.JsonSerDe'
LOCATION 's3://my-bucket/'
的创建查询成功了,但是当我尝试查询:
SELECT * FROM preserved_recordings limit 10;
我得到一个错误:
Query 93aa62d6-8a52-4a5d-a2fb-08a6e00181d3 failed with error code HIVE_CURSOR_ERROR: org.codehaus.jackson.JsonParseException: Unexpected end-of-input: expected close marker for OBJECT (from [Source: [email protected]; line: 1, column: 0]) at [Source: [email protected]; line: 1, column: 3]
AWS Ath ENA需要全部桶中的文件在这种情况下是JSON?我不确定如果.bin文件导致游标错误,或者其他事情正在发生。有没有其他人遇到过这种情况,或者可以告诉我发生了什么?
答
是的,Athena(Presto,Hive)要求存储在表LOCATION中的文件具有一致的格式。我相信你需要移动这些文件为每个底层数据模式创建单独的表。
谢谢詹姆斯。这是在任何地方的文档? –
不是我找到的。我不相信Hive表定义支持该概念(请参阅[11269203讨论](http://stackoverflow.com/q/11269203)),并且我没有找到Presto功能的文档,该功能会从文件中排除文件选择。 – James