私はAWS Glueをいじって、チュートリアル here
アテナでクローラーを正常に作成してデータを検出することができましたが、クローラーによって作成されたデータ型に問題がありました。 date
およびtimestamp
データ型は、string
データ型として読み取られます。
私はこれに続いて、入力としてクローラーによって作成されたデータソースとAmazon S3のターゲットテーブルを使用して、GLUEでETL
ジョブを作成しました
マッピング変換の一部として、日付とタイムスタンプのデータ型をstring
からtimestamp
に変換しましたが、残念ながらETLはこれらの列型をNULLS
に変換しました。 GROK
式で分類子を使用することを検討しましたが、GLUEのETLの一部として変換することにしました。
タイムスタンプの形式は1/08/2010 6:15:00 PM
あなたが使用しているタイムスタンプの形式がわからないので、その形式は次のように想定しました。
2018-05-30T12:22:07.000Z
この場合、次のようにテーブル定義でserdeパラメータを設定できます。
'timestamp.formats'='yyyy-MM-dd\'T\'HH:mm:ss.SSSZ'
以下は、タイムスタンプデータの組み込み分類子です。ご覧のように、あなたが持っているデータはそれらのどれとも一致しません。カスタム分類子を作成し、それを新しいクローラーに追加する必要があります(既存のクローラーの更新は機能しません)
TIMESTAMP_ISO8601 %{YEAR}-%{MONTHNUM}-%{MONTHDAY}[T ]%{HOUR}:?%{MINUTE}(?::?%{SECOND})?%{ISO8601_TIMEZONE}?
TZ (?:[PMCE][SD]T|UTC)
DATESTAMP_RFC822 %{DAY} %{MONTH} %{MONTHDAY} %{YEAR} %{TIME} %{TZ}
DATESTAMP_RFC2822 %{DAY}, %{MONTHDAY} %{MONTH} %{YEAR} %{TIME} %{ISO8601_TIMEZONE}
DATESTAMP_OTHER %{DAY} %{MONTH} %{MONTHDAY} %{TIME} %{TZ} %{YEAR}
DATESTAMP_EVENTLOG %{YEAR}%{MONTHNUM2}%{MONTHDAY}%{HOUR}%{MINUTE}%{SECOND}
CISCOTIMESTAMP %{MONTH} %{MONTHDAY} %{TIME}