Google Cloud Platform

GCSへのSnowflake Open Catalogによるデータレイクハウス導入チュートリアル

はじめに

こんにちは、エクスチュアの石原です。

今回は10月18日にSnowflakeよりGAが発表されたSnowflake Open Catalogのチュートリアルを実施してみました。チュートリアルではAWS環境をベースに構築していましたので、本記事ではGCP環境上にSnowflake Open Catalogを構築してみました。

構築で手間取った部分などご紹介できればと思います。

GCS上でのデータレイクハウス導入手順

Getting started with Snowflake Open Catalog

AWS版のチュートリアルと同様に進んで変更した点をご紹介します。

自分の環境ではminiconda3をインストールしました。また、下記の内容はスキップしています

  • Create an IAM policy that grants access to your S3 location
  • Create an IAM role

Create an internal catalog in Open Catalog

Storage providerをGCSに変更、Default base locationにGCS上のバケットを入力します。

例:gs://sample_bucket/snowflake_open_catalog(snowflake_open_catalogフォルダ内にデータが格納されます)

Create a trust relationship

GCSの場合はGCP_SERVICE_ACCOUNT情報を保存します。

保存したサービスアカウントへ該当するGCSへの書き込みと読み込みを含むアクセス権限を付与します。

Configure Spark

os.environ['SPARK_HOME'] = '/Users/xxxxx/miniconda3/envs/iceberg-lab/Lib/site-packages/pyspark' # condaでインストールしたpyspark環境の場所を指定してください

自分の環境ではJAVA_HOMEHADOOP_HOMEも環境変数として必要になったので保存しています。以下でパスが確認できるか試してみてください。必要であれば別途インストールしてください。

print(os.environ['JAVA_HOME']) # /Users/xxxxx/java
print(os.environ['HADOOP_HOME']) # /Users/xxxxx/hadoop/hadoop-3.0.0

spark.jars.packagesをGCPのパッケージに変更し、<open_catalog_account_identifier><client_id>:<client_secret><catalog_name><principal_role_name>の値をそれぞれ変更します。

<open_catalog_account_identifier>はログインした際のURLの英数字を設定します。

<client_id>:<client_secret>はCreate a new connection for Apache Spark™セクションで確認したシークレットに入力してください。

<catalog_name>はCreate an internal catalog in Open Catalogセクションで作成したカタログ名を入力します。

<principal_role_name>にはSet up catalog privileges for connectionセクションで作成したロール名を入力します。

注意点

10/30現在ではdefaultCatalogの設定を旧名称のpolarisに設定しなければいけなかったので注意

spark = SparkSession.builder.appName('iceberg_lab') \
.config('spark.jars.packages', 'org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.1,org.apache.iceberg:iceberg-gcp-bundle:1.5.2') \
.config('spark.sql.extensions', 'org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions') \
.config('spark.sql.defaultCatalog', 'polaris') \
.config('spark.sql.catalog.polaris', 'org.apache.iceberg.spark.SparkCatalog') \
.config('spark.sql.catalog.polaris.type', 'rest') \
.config('spark.sql.catalog.polaris.header.X-Iceberg-Access-Delegation','vended-credentials') \
.config('spark.sql.catalog.polaris.uri','https://<open_catalog_account_identifier>.snowflakecomputing.com/polaris/api/catalog') \
.config('spark.sql.catalog.polaris.credential','<client_id>:<client_secret>') \
.config('spark.sql.catalog.polaris.warehouse','<catalog_name>') \
.config('spark.sql.catalog.polaris.scope','PRINCIPAL_ROLE:<principal_role_name>') \
.getOrCreate()

その後のチュートリアルは変更なしでも行けるはずです。

ただし、Snowflakeが動作している環境がGCPではない場合、同期テーブルの設定時にThe external volume and warehouse must be in the same location for tables using the Snowflake catalog.エラーが発生してしまうので注意してください。その場合、同期の設定に関してはホストしているクラウドと同一リージョンのストレージを利用してください。

今回の記事は以上となります。同じポイントで困っていた人の助けになれば幸いです。

エクスチュアはマーケティングテクノロジーを実践的に利用することで企業のマーケティング活動を支援しています。
ツールの活用にお困りの方はお気軽にお問い合わせください。

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Google Cloud Platform

    Server-side GTMのAppEngine設定をカスタマイズする

    こんにちは、エクスチュアの権泳東(權泳東/コン・ヨンドン)です。…

  2. Google BigQuery

    GCPのBQMLを使ってKaggleコンペに挑んでみた(その1)

    こんにちは。エクスチュアでインターンをさせて頂いている中野智基です。…

  3. Google Cloud Platform

    Google Compute EngineのUbuntu VMにスワップ領域を作成する

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  4. Google Cloud Platform

    Looker: LookerbotをGoogle Cloud Platformで動かす

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  5. Google Cloud Platform

    Google Compute Engine: 一定時間経過したらタスクを強制終了する

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

  6. Adobe Analytics

    Adobe Analytics: DWHレポートの日付列をBigQueryのDate型として扱う

    こんにちは、エクスチュアの權泳東(権泳東/コン・ヨンドン)です。…

カテゴリ

最近の記事

  1. 進化学に倣う最適化手法「遺伝的アルゴリズム」
  2. dbt_expectationsでデータ品質を向上させよう
  3. BigQueryとSnowflakeのLLM関数を比較してみ…
  4. dbtCloud使ってみた
  5. ChainlitでのOAuth認証にスコープを追加する方法
  1. Google Cloud Platform

    LookerStudioを知る。
  2. IT用語集

    プラットフォーム(Platform)って何?
  3. Adobe Analytics

    Adobe Analytics: ランドスケイプの「企業ログ解析データベースAP…
  4. Google Analytics

    【GA4】推奨イベント・カスタムイベントの設定方法
  5. 海外カンファレンス

    Adobe Summit 2018 レポート(1):AIとヒトで最高の経験を!
PAGE TOP