2017-11-17 53 views
0

私がしようとしているのは、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} 

enter image description here

しかし、私はいつでも再実行クローラは、それがカスタム分類子をスキップし、デフォルトのJSONのいずれかを使用しています。解決策として、私はクローラを実行する前にJSON自体にファイル名を追加できますが、この手順を回避できるかどうか疑問に思っていましたか?

答えて

0

クラシファイアはファイル内のデータのみを解析し、ファイル名は解析しません。あなたがしたいことは、今日は不可能です。ファイルが存在するパスを変更できる場合は、別のパーティションとして日付を追加できます。

s3://my-bucket/id=10001/source=fromage/timestamp=2017-10-10/data-file-2017-10-10.json 
+0

クラシファイアは、相対パスに基づいてパーティションを追加するだけでなく、データを分析するだけでなく、したがって、カスタムMap Reduceを使用してこの作業を行うのではなく、クロールすることができると期待していました。 – madbitloman

+0

クローラが見つかったファイルの相対パスに分類子を適用することを示唆する参照は見つかりません。 AWSドキュメントは、ファイルの接頭辞に基づいてデータを分割するクローラ(分類子ではない)を示しています。 – hoaxz

+0

ここからスライド23でhttps://www.slideshare.net/AmazonWebServices/bda311-introduction-to-aws-glue – madbitloman

関連する問題