新しい会話を開始

未解決

1 Rookie

 • 

33 メッセージ

125

2025年3月5日 13:01

DataPlatformTech 第32回 マルチクラウドにおけるデータプラットフォーム(Snowflake編)

いつも本ブログをご覧頂きまして誠にありがとうございます。今回はSnowflake AI Data Cloud(以下Snowflake)とDell Technologiesのデータプラットフォーム製品の連携についてご紹介します。

3年前のDell Technologies World 2022でSnowflake社とのコラボレーションを発表(業界初のオンプレミス/コロケーションストレージとSnowflakeとの連携)しましたが、当初はSnowflakeとDell ECSとの外部テーブルやデータコピーによる連携のみでした。近年では新たにDell Data Lakehouseがリリースされて、Dell Data LakehouseからSnowflakeへ接続することも出来るようになりましたので、Dell Data LakehouseとSnowflakeのエコシステムという観点も含めてご紹介したいと思います。


組織はコストや柔軟性、性能面やコンプライアンスなどの様々な理由からパブリッククラウドとオンプレミスの環境を使い分けていますが、関連性の低いシステムかつ異なったロケーションで生成されたデータはサイロ化されてしまうことが多々あります。データマネジメントでは、いかにコストや時間をかけずにガバナンスやセキュリティを維持した状態でハイブリッドなエコシステム (Ground to CloudおよびCloud to Ground) を構築するかが悩みどころです。今回はこのような課題に対して「Dell Data LakehouseからSnowflakeに接続」や「オンプレミスのDell ECSのデータをSnowflakeで利用」についてご紹介します。なお、本内容はDell Technologiesが提供する「Demo Center」と「ECS Test Drive」(どちらも無料)、Snowflake社の無料トライアルで試すことができます。

Dell Data LakehouseからSnowflakeに接続

先ずはDell Data LakehouseのSnowflakeコネクタを用いてSnowflakeに接続する方法をご紹介します。Dell Data Lakehouseでは50以上のコネクタを用意しておりSnowflake含めた各種データソースと接続が可能です。

接続を行うにはDell Data Lakehouseの管理者用のWebUIであるDell Data Lakehouse System Softwareを用いてSnowflakeに接続するためのカタログを作成します。Catalogsメニューから「Connect Catalog」ウィザードで下記のように設定します。(下記が最低限必要な項目となります。)

Type: snowflake_jdbc

Name: snowflake ※ 任意の名前を付けることが可能ですが今回は便宜上snowflakeとしています。

Configuration (optional): ※下記参照

connection-password=<パスワード>
connection-url=jdbc:snowflake://<Snowflakeアカウント名>.snowflakecomputing.com/
connection-user=<ユーザ名>
snowflake.database=<接続DB名>
snowflake.warehouse=<クエリ実行に使用するSnowflakeのウェアハウス名>

上記入力後「Next」を3回押して(画面遷移後そのまま進めて)最後に「Save」をクリックします。

その後、Clusterメニューの「Assigned Catalogs」から上記で作成したカタログをDell Data Lakehouseに対してアサインします。

今回は、Snowflakeのチュートリアル[S3からサンプルデータをロード]に出てくる"MENU"テーブルで動きを確認していきます。下記がSnowsight(SnowflakeのWebUI)からクエリを実行した結果です。 "MENU"テーブルに含まれているmenu_type(Ice CreamやBBQ)、menu_item_name(Lemonade、Waffle Coneなど)、item_category(BeverageやDessert、Mainなど)が含まれたレコードを確認頂けます。

次に、Dell Data Lakehouseの利用者用のWebUIであるDell Data Analytics Engineを用いて確認します。先程、Snowflakeコネクタをアサインしましたので、「Cluster explorer」にsnowflakeという名前のカタログが登録されていることが確認できます。実際にクエリすると下記のとおりSnowsightでクエリした内容と同じ結果が確認頂けると思います。

もちろん、クエリフェデレーションも可能です。(SnowflakeテーブルとPostgreSQLテーブルの結合の例)

以上、「Dell Data LakehouseからSnowflakeに接続」でした。続いて「オンプレミスのDell ECSのデータをSnowflakeで利用」をご紹介します。

オンプレミスのDell ECSのデータをSnowflakeで利用

オンプレミスのDell ECSのデータをSnowflakeで利用する方法は大きく2つあり、「Dell ECSをSnowflakeの外部ステージ/テーブルとして利用」と「Dell ECSのData Mobility機能を用いてSnowflakeの外部ステージにコピー」があります。

Snowflakeでは外部テーブルを除く全てのテーブルはSnowflakeが管理するオブジェクトストレージに格納されます。このSnowflakeが管理しているオブジェクトストレージはユーザは直接アクセスができませんが、外部ステージの機能を使うことによりSnowflakeからユーザが利用(所有)しているオブジェクトストレージに対してアクセスが出来るようになります。

Dell ECSをSnowflakeの外部ステージ/テーブルとして利用

1つめは、オンプレミスやコロケーションのDell ECSをSnowflakeに登録して連携する方法です。この方法ではDell ECS内に存在するCSVやParquet、ORCなどのデータをSnowflakeから直接クエリすることができます。

具体的にはオンプレミスやコロケーションのDell ECSをSnowflakeの外部ステージとして登録し外部テーブル(読み取り専用)を作成することにより、Dell ECS内のデータに対してSnowflakeからクエリを実行することができます。

設定方法ですが、予めDell ECSに外部ステージ用のバケット(/external/snowflake)を作成しておきます。続いてCREATE STAGE文で外部ステージを作成します。

CREATE OR REPLACE STAGE ext_ecs
url='s3compat://external/snowflake'
endpoint='object.ecstestdrive.com'
credentials=(
 AWS_KEY_ID='<アクセスキー>@ecstestdrive.emc.com'
 AWS_SECRET_KEY='<シークレットキー>');

次にCREATE EXTERNAL TABLE文で外部テーブルを作成します。今回はastronauts_extという名前の外部テーブルを作成しました。個人的に普段デモで利用することの多いastronauts.csv(24カラム、約1300レコード)を読み込みます。このCSVファイルは歴代の宇宙飛行士の方々のデータ(name、year_of_birth、nationality、total_number_of_missions、ascend_shuttleなど)が含まれています。

CREATE OR REPLACE EXTERNAL TABLE astronauts_ext (
    id STRING AS (VALUE:c1::STRING),
~~id以降のカラムは省略~~
)
LOCATION=@ext_ecs
AUTO_REFRESH = false
FILE_FORMAT = (TYPE = 'CSV' FIELD_OPTIONALLY_ENCLOSED_BY = '"');

外部ステージであるDell ECSのバケットに配置したCSVファイル(/external/snowflake/astronauts.csv)に対してクエリを実行した結果は下記となります。

Dell ECSのData Mobility機能を用いてSnowflakeの外部ステージにコピー

2つめは、Dell ECSを直接接続するのではなくDell ECSのデータをパブリッククラウドのオブジェクトストレージ(外部ステージ)にデータをコピーして利用する方法となります。Dell ECSのData Mobility(Copy to Cloud)機能により、Snowflakeの外部ステージとなるオブジェクトストレージにデータをコピーすることが可能です。データのコピーはDell ECS によって自動的(デフォルトでは60分毎)にデータ移動ポリシのジョブが実行され、オブジェクトをスキャン後に該当するデータをコピーします。
なお、Data Mobilityを使用する際には幾つか前提条件(IAMバケットでMetadata Searchの機能が有効になっておりLastModifiedがインデックス化されている等)があります。また、S3のバージョニングを有効にしている場合は、現在のバージョンのみコピーされます。こちらは今回試しておらずDell ECSのData MobilityのGUI(スクリーンショット)のみとなることをご了承ください。

Data Mobilityは、Dell ECSやS3互換のオブジェクトストレージにコピーができますので、データ分析のシナリオ以外にも簡易的なバックアップやAirGapにもご利用いただけます。

以上、Dell Data LakehouseとSnowflakeによるクエリファブリックのご紹介でした。

さいごに

先日、「TECH+ EXPO 2025 Winter for データ活用 データを知恵へと昇華させるために」に登壇させて頂きました。ご参加頂いた皆様ならびに関係者の皆様ありがとうございました。この場を借りてお礼申し上げます。

関連リンク

データ分析・AI開発の“理想的なデータプラットフォーム”とは? デル・テクノロジーズが描くビジョンとソリューションに着目する | TECH+(テックプラス)

DataPlatformTech 第31回 PowerScaleのメタデータ管理 ~MetadataIQ~ | DELL Technologies

安井 謙治
Dell Technologies│Unstructured Data Solutions
インフラストラクチャー ソリューションズ SE統括本部
UDS SE本部
レスポンスがありません。
イベントは見つかりませんでした!

Top