2016-12-02 8 views
4

AWS Athenaでの実験。そのようなファイル構造を持つS3バケットからテーブルを作成しようとしています:AWS Athena on 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ファイルがカーソルエラーの原因になっているか、何か他のことが起こっているかどうかはわかりません。他の誰かがこれに遭遇しましたか、何が起こっているかを私に手がかりにすることができますか?

答えて

2

はい、Athena(Presto、Hive)では、テーブルのLOCATIONに格納されているファイルの形式が一貫している必要があります。私はあなたがそれぞれの基礎となるデータスキーマのための別々のテーブルを作るためにファイルを移動する必要があると信じています。

+0

ありがとうございました。これはドキュメンテーションのどこにあるのですか? –

+0

私が見つけたわけではありません。私はその概念がHiveテーブル定義([11269203 discussion(http://stackoverflow.com/q/11269203)を参照)によってサポートされているとは思っていません。また、Presto機能のドキュメントを見つけられませんでした。選択します。 – James

関連する問題