Snowflakeカタログ SDK¶
Snowflakeカタログ SDK は、 Apache Iceberg™ バージョン1.2.0以降でご利用いただけます。
Snowflakeカタログ SDK では、 Apache Spark™ やTrinoなどのサードパーティ製エンジンを使用して、 Icebergテーブル をクエリできます。
サポートされているカタログ操作¶
SDK は、SnowflakeでIcebergメタデータを参照するための次のコマンドをサポートしています。
SHOW NAMESPACES
USE NAMESPACE
SHOW TABLES
USE DATABASE
USE SCHEMA
現在、SDK は読み取り操作(SELECT ステートメント)のみをサポートしています。
インストールと接続¶
Snowflakeカタログ SDK をインストールするには、 最新バージョンのIcebergライブラリ をダウンロードします。
Snowflakeカタログ SDK を使用する前に、1つ以上のIcebergテーブルを持つSnowflakeデータベースが必要です。Icebergテーブルを作成するには、 Snowflakeで Apache Iceberg™ テーブルを作成する をご参照ください。
接続を確立して、SDK でIcebergメタデータが存在することが確認されると、SnowflakeはIcebergテーブルに関連付けられた外部ボリュームを使用してParquetデータにアクセスします。
Sparkを使用した例¶
注釈
TrinoとSnowflakeカタログ SDK の使用方法については、 Trinoドキュメント をご参照ください。
テーブルデータを SDK で読み取るには、まずSparkクラスタに次のプロパティを設定します。
注釈
次の構文を使用することで、Snowflakeがサポートする任意の JDBCドライバ接続パラメーター を設定で使用できます: --conf spark.sql.catalog.snowflake_catalog.jdbc.property-name=property-value
Sparkクラスタを設定したら、クエリ可能なテーブルを確認できます。例:
そして、クエリするテーブルを選択できます。
PythonやScalaなどの言語で DataFrame 構造を使用してデータをクエリできます。
注釈
クエリ実行中にベクトル化された読み取りエラーが発生した場合は、次のように設定してセッションのベクトル化された読み取りを無効にすることができます: spark.sql.iceberg.vectorization.enabled=false。ベクトル化された読み取りを使い続けるには、 STORAGE_SERIALIZATION_POLICY パラメーターを設定します。
クエリのキャッシュ¶
クエリを発行すると、Snowflakeは一定時間内(デフォルトでは90秒)結果をキャッシュします。その期間まで遅延が発生する可能性があります。比較のためにプログラムでデータにアクセスする場合は、 spark.sql.catalog.cache-enabled プロパティを false に設定してキャッシュを無効にできます。
アプリケーションが特定の遅延時間を許容するように設計されている場合、次のプロパティを使用して遅延時間を指定できます: spark.sql.catalog.cache.expiration-interval-ms。
制限事項¶
次の制限はSnowflakeカタログ SDK に適用され、変更される場合があります。
現在、SDK は読み取り操作(SELECT ステートメント)のみをサポートしています。
Icebergテーブルの読み取りに対応しているのは、Apache SparkとTrinoのみです。
SDK を使用してIceberg Snowflake以外のテーブルにアクセスすることはできません。