4

AWS Athena の実験。次のようなファイル構造を持つ S3 バケットからテーブルを作成しようとしています。

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: java.io.ByteArrayInputStream@2da7f4ef; line: 1, column: 0]) at [Source: java.io.ByteArrayInputStream@2da7f4ef; line: 1, column: 3]

この場合、 AWS Athenaはバケット内のすべてのファイルを JSON にする必要がありますか? .bin ファイルが原因でカーソル エラーが発生しているのか、それとも何か他のことが起こっているのかはわかりません。他の誰かがこれに遭遇しましたか、それとも何が起こっているのか私に手がかりを与えることができますか?

4

2 に答える 2

3

はい、Athena (Presto、Hive) では、テーブルの LOCATION 内に保存されているファイルが一貫した形式である必要があります。ファイルを移動して、基になるデータ スキーマごとに個別のテーブルを作成する必要があると思います。

于 2016-12-04T06:53:35.100 に答える
1

最近、優先順位 _ でファイルを配置すると、ハイブがそれらを無視することを発見しました。したがって、あなたの例では、ファイルの名前を _data.bin に変更すると、ファイルは無視されます。

于 2019-11-28T15:50:26.153 に答える