3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBMが提供する製品に関する情報やナレッジを共有するAdvent Calendar 2024

Day 12

Datastageで、Snowflakeの巨大データを処理してみた #1

Last updated at Posted at 2024-12-11

この記事について

実施概要

  • 対象データベースはSnowflake(Azure/東京)の「SNOWFLAKE_SAMPLE_DATA」を使用します
  • 「SF10」「SF100」各スキーマから、「REGION」「NATION」「CUSTOMER」「ORDERS」テーブルを引っこ抜いてJOINしてフィルタリングするフローをDatastageに実行させます
  • どの程度のデータ量で、どの程度の処理時間がかかるのかを測ってみます
  • Datastage は、IBMCloudの東京リージョン上のOpenshiftに建てたCloud Pak for Data v5.0.3 上のコンテナソフトウェアを使用しています

スキーマ「SF10」の場合

処理対象

  • スキーマ「SF10」

    • 「REGION」:5行、4.0KB
    • 「NATION」:25行、4.0KB
    • 「CUSTOMER」:1.5M(150万)行、103.2MB
    • 「ORDERS」:15M(1500万)行、425.8MB
  • 最もレコード件数が多いテーブルが「ORDERS」

    • 件数:1千500万行
    • データサイズ:425.8MB
      スクリーンショット 2024-12-12 15.36.30.png

Snowflake側の設定

  • Computeはデフォルトの「COMPUTE-WH」(X-Smallサイズ)を使用
    スクリーンショット 2024-12-12 10.02.44.png

Datastage側の設定

  • ランタイムは、デフォルト(Small)設定

Snowflake の結果

  • 最大で8秒足らずという感じでした
    スクリーンショット 2024-12-12 15.37.13.png

  • ORDERSテーブルの場合のSQLはこちら
    スクリーンショット 2024-12-12 15.38.45.png

Datastage の結果

フロー

スクリーンショット 2024-12-12 15.39.24.png

ジョブ(時間)

スクリーンショット 2024-12-12 15.40.10.png

  • 最大1千500万行のデータを含めて、3分足らずで処理終了しました

スキーマ「SF100」の場合

処理対象

  • スキーマ「SF100」

    • 「REGION」:5行、4.0KB
    • 「NATION」:25行、4.0KB
    • 「CUSTOMER」:15M(1500万)行、1.0GB
    • 「ORDERS」:150M(1億5千万)行、4.3GB
  • 最もレコード件数が多いテーブルが「ORDERS」

    • 件数:1億5千万行
    • データサイズ:4.3GB
      image.png

Snowflake側の設定

  • Computeはデフォルトの「COMPUTE-WH」(X-Smallサイズ)を使用
    スクリーンショット 2024-12-12 10.02.44.png

Datastage側の設定

  • ランタイムは、デフォルト(Small)設定
    スクリーンショット 2024-12-12 15.01.58.png

Snowflake の結果

  • 各テーブル、1秒もかからずという感じでした

    • (この前にも数回試していたため、キャッシュが効いて早かったのかもしれません)
      スクリーンショット 2024-12-12 15.13.34.png
  • ORDERSテーブルの場合のSQLはこちら
    スクリーンショット 2024-12-12 15.13.55.png

Datastage の結果

フロー

スクリーンショット 2024-12-12 15.01.20.png

ジョブ(時間)

スクリーンショット 2024-12-12 15.04.38.png

  • 最大1億5千万行のデータを含めて、約25分程度で処理終了しました

スキーマ「SF1000」の場合

処理対象

  • スキーマ「SF10」

    • 「REGION」:5行、4.0KB
    • 「NATION」:25行、4.0KB
    • 「CUSTOMER」:150M(1億5千万)行、10.1GB
    • 「ORDERS」:1.5B(15億)行、48.6GB
  • 最もレコード件数が多いテーブルが「ORDERS」

    • 件数:1.5B(15億)行
    • データサイズ:48.6GB
      スクリーンショット 2024-12-12 15.45.19.png

以前ためした場合の結果では

以前ためした場合にうまく言っていたので、今回もうまくいくとおもっていました

こんな感じで
スクリーンショット 2024-12-20 10.22.47.png
スクリーンショット 2024-12-20 10.23.16.png
スクリーンショット 2024-12-20 10.23.40.png

  • では、今回は上記のような結果は再現できるでしょうか?

Snowflake側の設定

  • XL サイズを使用しました
    スクリーンショット 2024-12-20 9.53.35.png

Datastage側の設定

  • エフェメラルストレージを1000GB程度まで拡張
  • (社内の有識者からもらったアドバイス。ただしあくまでテスト用の一時的な処理であり、本番ではストレージを別途準備するように、とのこと)
[root@localhost ~]# oc -n ${PROJECT_CPD_INST_OPERANDS} patch pxruntime ds-px-xlarge --patch '{"spec":{"ephemeralStorageLimit": "1000Gi"}}' --type=merge
pxruntime.ds.cpd.ibm.com/ds-px-xlarge patched
[root@localhost ~]# 

Snowflake の結果

  • 数十秒かかっていますが、問題なく15億行のデータも含めて処理できていました
    スクリーンショット 2024-12-20 10.31.53.png

Datastage の結果

フロー

スクリーンショット 2024-12-20 10.28.18.png

ジョブ(時間)

  • 2時間くらいたったところで失敗していました。。。

スクリーンショット 2024-12-20 10.29.40.png

結論

  • このフローでは超巨大データを処理できなかったので、やり方をかえてみます!
  • そのリベンジの結末はこちらをご参照ください!
3
0
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
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?