1
2

More than 1 year has passed since last update.

Kinesis Data FirehoseからParquetファイルでS3に書き込む

Posted at

背景・目的

Kinesis Datga Firehose(以降、KDFといいます。)から、S3にParquetを出力する機会がなかったので試してみました。
なお、思わぬところでハマったので、忘れないように合わせて載せておきます。

まとめ

  • Firehoseだけではなく、Lakeformationの設定も必要でした。

概要

AthenaやRedshift Spectrumで分析しやすいようにKDFでParquetフォーマットに変換しS3に出力します。今回は、S3 Selectで確認するところまでをスコープとします。

実装

KDFの設定

  1. Kinesisトップ画面で配信ストリームをクリックします。
    image.png

  2. KDFの画面で以下を入力すると、設定項目が変更されます。

    • SourceにDirect Put
    • DestinationにS3
      image.png
  3. ストリーム名に名前をつけます。

  4. Convert record formatでEnableを選択すると、以降の入力項目が変更されます。
    image.png

  5. 変換のために以下を設定します。

    • Output formatにカラムナータイプのParquetとORCの2つが選択できますが、今回はParquetを選択します。
    • Glueリージョン
    • Glueデータベースとテーブル
      image.png
  6. 以下を入力しデータをフィードするS3の設定を行います。

    • S3 bucketにフィードするバケット
    • Dynamid partitionsはDisable
    • S3 bucket prefixとS3 bucket error prefixは今回は未入力
      image.png
  7. 最後にCreate Delivery Streamをクリックします。(IAMロールは同時に作成されます。)

    • エラーになりました。Access DeniedExceptiongaでました。
      image.png
  8. IAMポリシーを修正

    • どうやらLakeFormationの権限が不足していそうです。
      image.png
  9. IAMポリシーにLakeFormationを追加

    • 一旦、LakeFormationのフルアクセス権限をポリシーに追加します。
      image.png-
  10. LakeFormationのナビゲーションペインでData Lake permissionsをクリックします。
    image.png

  11. permissionsでGrantをクリックします。
    image.png

  12. principalsでKDFで作成したIAMロールを指定します。
    image.png

  13. LF-Tags or catalog resourcesで、「Named data catalog resources」を選択し、Databasesに該当するデータベース、Tablesは「all tables」を選択します。
    image.png

  14. 以下を全て選択して、Grantをクリックします。
    image.png

  15. IAMロールでフィルターをかけると対象のリソースの権限が見えます。
    image.png

  16. 上記の設定後、KDFで再び、「Create Delivery Stream」をクリックすると作成できました。
    image.png

疎通確認

  1. KDFの「Test with demo data」を実行します。
    image.png

  2. S3を確認
    フィードされました。
    image.png

  3. S3 SELECTで確認
    image.png

  4. 見えました。
    image.png

考察

今回は、KDFからS3に出力するフォーマットをParquetにしてみました。簡単にできると思いきや、デフォルトで作成される権限だけではなくLakeFormationの設定が必要でした。
少しはまりましたが、これでAthenaやRedshift Spectrumでそのまま参照できそうです。
なお、以下については、別途整理しようと思います。

  • Parquetファイルの構造
  • LakeFormation

参考

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2