1
0

More than 1 year has passed since last update.

Everything (It's you)をFirehoseでparquet形式にしてみた

Last updated at Posted at 2022-02-22

Kinesis3兄弟

言わずも知れた3兄弟のうち、Firehoseを触ってみました。(自分用のメモです)

image.png

Firehoseって?

ストリーミングデータを確実にキャプチャおよび変換し、データレイク、データストア、および分析サービスに配信する、抽出、変換、ロード (ETL) サービス

とありますが、とりあえずEverything (It's you)=>parquet変換を試してみました。
(JSON=>parquet変換ですね)

data = {
    "id": 1,
    "name": "Everything(It's you)"
}  

Firehose配信ストリーム作成

image.png

Source

Kinesis Data Streamsから取り込むか、直接Firehoseへ書き込むか。
今回はDirectPUTを試行。

image.png

Destination

出力先を色々選べますが、今回はS3を選択。

image.png

ストリーム名を設定

image.png

データ変換の指定

Record format converionEnabledに。
Output formatの設定が表示されるので下図のようにApache Parquetを指定。
データ変換プロキシの役割するAWS Glue databaseを指定

image.png

出力先S3バケットを指定

image.png

作成Done

image.png

Firehoseへデータを送信

put_recordにてEverything(It's you)を送信。

sample.py
import boto3
import json

client = boto3.client('firehose')

data = {
    "id": 1,
    "name": "Everything(It's you)"
}    

response = client.put_record(
    DeliveryStreamName='PUT-S3-from-kinoko',
    Record={
        'Data': f'{json.dumps(data)}\n'
    }
)

print(response)

S3を見てみると

.parquetの形式で格納されてた。

image.png

  • デフォルトで5分間隔の配信頻度

PUTしてからしばらく経ってからS3に格納されましたが、以下の通りデフォルトのBuffer interval5分となってますので、この値を良きに変更すれば良さそうです。

image.png

Amazon S3 へのデータ配信の頻度は、配信ストリームで設定した Amazon S3 の [Buffer size (バッファサイズ)] および [Buffer interval (バッファ間隔)] の値によって決まります。

まとめ

parquet形式に簡単に変換できたけど、この先どう扱っていくかはまだピンと来ていないので試してみたい。

1
0
1

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
0