amazon athenaでクエリされたデータを年、月、日でパーティション分割しようとしています。ただし、パーティション化されたデータからクエリを実行しようとすると、レコードを取得できません。私はこのblog投稿にある指示に従った。amazon athenaのパーティショニングテーブル
テーブルクエリを作成します。
CREATE external TABLE mvc_test2 (
ROLE struct<Scope: string, Id: string>,
ACCOUNT struct<ClientId: string, Id: string, Name: string>,
USER struct<Id: string, Name: string>,
IsAuthenticated INT,
Device struct<IpAddress: string>,
Duration double,
Id string,
ResultMessage string,
Application struct<Version: string, Build: string, Name: string>,
Timestamp string,
ResultCode INT
)
Partitioned by(year string, month string, day string)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://firehose-titlesdesk-logs/Mvc/'
テーブルが正常に作成され、その結果のメッセージは述べていますされています。
「クエリ成功したあなたのテーブルには、パーティションがある場合は、これらの のパーティションをロードする必要がありますすべての パーティションをロードするか、または個別にロードすることができます。 パーティション(MSCK REPAIR TABLE)コマンドすべてをロードする場合、パーティションは の形式でなければなりませんHiveによるood。 。詳しくはこちらをご覧ください "
私は結果を得るmsck repair table mvc_test2;
実行
:
" パーティションない メタストアで:mvc_test2:2017/06/06/21 mvc_test2:2017/06を/ 06/22 "
この時点では、テーブルをクエリしようとすると結果は得られません。
ログは、年/月/日/時間でサブフォルダ形式で保存されます。 例: 's3:// firehose-application-logs/process/year/month/day/hour'
データを正しくパーティション分割するにはどうすればよいですか?
あなたは負荷のすべてのパーティション(MSCKの修復表)コマンドを使用している場合」、**パーティションはハイブが理解できる形式でなければなりません** " –