私がしようとしているのは、AWS GlueでS3バケットのデータをクロールすることです。ネストされたJSONとパスとして保存されたデータは次のようになります。ファイル名に基づいてAWS Glueカスタムクローラ
s3://my-bucket/some_id/some_subfolder/datetime.json
デフォルトのクローラ(なしカスタム分類)それは私がからタイムスタンプを取得したいと思い、しかし、パスに基づいて、それを分割し、予想されるとして、JSONをデシリアライズを実行していますファイル名も別のフィールドに入力します。今のところ、Crawlerはそれを省略しています。例えば
私は上のクローラを実行する場合:
- パーティション1:10001
- パーティション2:フロマージュ
- アレイ:JSONデータ
s3://my-bucket/10001/fromage/2017-10-10.json
私はこのようなテーブルスキーマを取得
試しましたGROKパターンに基づいたカスタム分類器を追加することが:
%{INT:id}/%{WORD:source}/%{TIMESTAMP_ISO8601:timestamp}
しかし、私はいつでも再実行クローラは、それがカスタム分類子をスキップし、デフォルトのJSONのいずれかを使用しています。解決策として、私はクローラを実行する前にJSON自体にファイル名を追加できますが、この手順を回避できるかどうか疑問に思っていましたか?
クラシファイアは、相対パスに基づいてパーティションを追加するだけでなく、データを分析するだけでなく、したがって、カスタムMap Reduceを使用してこの作業を行うのではなく、クロールすることができると期待していました。 – madbitloman
クローラが見つかったファイルの相対パスに分類子を適用することを示唆する参照は見つかりません。 AWSドキュメントは、ファイルの接頭辞に基づいてデータを分割するクローラ(分類子ではない)を示しています。 – hoaxz
ここからスライド23でhttps://www.slideshare.net/AmazonWebServices/bda311-introduction-to-aws-glue – madbitloman