3

私がやろうとしているのは、AWS Glue を使用して S3 バケットのデータをクロールすることです。ネストされた json とパスとして保存されたデータは次のようになります。

s3://my-bucket/some_id/some_subfolder/datetime.json

デフォルトのクローラー(カスタム分類子なし)を実行すると、パスに基づいて分割され、期待どおりにjsonが逆シリアル化されますが、別のフィールドでファイル名からタイムスタンプも取得したいと思います。今のところ、クローラーはそれを省略しています。

たとえば、クローラーを実行すると:

s3://my-bucket/10001/fromage/2017-10-10.json

次のようなテーブル スキーマを取得します。

  • パーティション 1: 10001
  • パーティション2:フロマージュ
  • 配列: JSON データ

Grok パターンに基づいてカスタム分類子を追加しようとしました。

%{INT:id}/%{WORD:source}/%{TIMESTAMP_ISO8601:timestamp}

ここに画像の説明を入力

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

4

1 に答える 1

3

分類子は、ファイル名自体ではなく、ファイル内のデータのみを分析します。あなたがしたいことは、今日は不可能です。ファイルが到着するパスを変更できる場合は、日付を別のパーティションとして追加できます。

s3://my-bucket/id=10001/source=fromage/timestamp=2017-10-10/data-file-2017-10-10.json
于 2017-12-13T14:19:41.537 に答える