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.エラーが発生してしまうので注意してください。その場合、同期の設定に関してはホストしているクラウドと同一リージョンのストレージを利用してください。

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

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

VPC Service Controlsで「NO_MATCHING_ACCESS_LEVEL」とエラーが出た時にやること前のページ

回帰分析はかく語りき Part3 ロジスティック回帰次のページ

ピックアップ記事

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

関連記事

  1. Google Cloud Platform

    GoogleNext 2019レポート:初日目

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

  2. Google Cloud Platform

    Looker: LookerbotでSlackにグラフ画像をスケジュール投稿する

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

  3. Google Cloud Platform

    GoogleNext 2019レポート:2日目

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

  4. Google BigQuery

    GoogleNext 2019レポート:3日目

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

  5. Google BigQuery

    BigQuery BI Engine解説

    こんにちは、エクスチュア渡部です。2019/4/9-4/11に行わ…

  6. Enterprise Data Warehouse

    爆速データウェアハウスなApache Druidを試す

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

カテゴリ
最近の記事
  1. Dataformでtype:’increment…
  2. dbt Projects on SnowflakeをTASK…
  3. AWS発のAIエージェントIDE「Kiro」を使用した仕様駆…
  4. AWS発のAIエージェントIDE「Kiro」を使用した仕様駆…
  5. TableauとSnowflakeを接続する方法
  1. Google Cloud Platform

    LookerStudioを知る。
  2. IT用語集

    インベントリ(Inventory)って何?
  3. Google Analytics

    初めてのGoogle Analytics分析
  4. Tableau

    【TC19ブログ】Tableau新データモデリング(リレーションシップ)解説
  5. RevOps

    Snowflakeや最新データ基盤が広義のマーケティングにもたらす価値 in 2…
PAGE TOP