1
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?

More than 1 year has passed since last update.

Unity CatalogによるデータロードでのCOPY INTOの活用

Posted at

Use COPY INTO to load data with Unity Catalog | Databricks on AWS [2022/8/17時点]の翻訳です。

本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。

COPY INTOでサポートされているソースやファイルフォーマットからUnity Catalogのマネージドテーブル、外部テーブルにデータを取り込む際にCOPY INTOを使用することができます。Unity Catalogでは、生データに対するセキュアなアクセスを設定するための新たなオプションを追加しており、クラウドオブジェクトストレージにあるデータにアクセスするためにUnity Catalogの外部ロケーションやストレージ資格情報を使うことができます。

Unity CatalogテーブルへのCOPY INTO

3レベルの識別子(<catalog_name>.<database_name>.<table_name>)を用いてUnity Catalogのテーブルを指定することができます。現在のクエリーやノートブックにおけるデフォルトのカタログやデータベースを設定するために、USE CATALOG <catalog_name>USE <database_name>を使うことができます。

既存のテーブルにCOPY INTOを行いたい場合には、テーブルを格納するカタログとデータベースに対するUSAGE権限と、当該テーブルに対するMODIFY権限が必要になります。

一時資格情報が設定されたクラウドオブジェクトストレージロケーションを含む、あなたがアクセスできるソースロケーションからCOPY INTOを実行することができます。

外部ロケーションからのデータのロード

Unity Catalogの外部ロケーションからデータをロードするには、当該ロケーションに対するREAD FILES権限が付与されている必要があります。外部ロケーションの権限は指定されたロケーション配下にあるすべてのネストされたディレクトリに適用されます。

例えば、URL s3://landing-bucket/raw-dataで定義される外部ロケーションへのアクセスが可能な場合、以下のコマンドは適切です:

SQL
COPY INTO landing_table
FROM 's3://landing-bucket/raw-data'
FILEFORMAT = PARQUET;

COPY INTO json_table
FROM 's3://landing-bucket/raw-data/json'
FILEFORMAT = JSON;

この外部ロケーションに対する権限は、指定されたロケーションの上位レベル、同レベルのディレクトリに対してはいかなる権限も付与しません。例えば、以下のコマンドのいずれも適切ではありません:

SQL
COPY INTO parent_table
FROM 's3://landing-bucket'
FILEFORMAT = PARQUET;

COPY INTO sibling_table
FROM 's3://landing-bucket/json-data'
FILEFORMAT = JSON;

データにアクセスするためのストレージ資格情報の指定

データ取り込みに使用されるディレクトリに対しては、外部ロケーションを用いて明示的に権限を設定することをお勧めします。また、COPY INTOは、データにアクセスするためにUnity Catalogのストレージ資格情報をサポートしています。READ FILES権限は、ストレージ資格情報でアクセスすることができるすべてのクラウドオブジェクトストレージロケーションからのCOPY INTOを用いたデータの取り込みを行うためのアクセス権を付与します。ストレージ資格情報は外部ロケーションよりも広範な権限を持つ場合があるので、ストレージ資格情報へのアクセスを許可する際には注意して使用してください。

以下のサンプルでは、ソースデータへのアクセスを提供するためにUnity Catalogのストレージ資格情報を用いて、S3やADLS Gen2からデータをロードします。

SQL
COPY INTO my_json_data
FROM 's3://landing-bucket/json-data' WITH (
  CREDENTIAL `bucket-creds`
)
FILEFORMAT = JSON;

COPY INTO my_json_data
FROM 'abfss://container@storageAccount.dfs.core.windows.net/jsonData' WITH (
  CREDENTIAL `adls-creds`
)
FILEFORMAT = JSON;

Databricks 無料トライアル

Databricks 無料トライアル

1
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
1
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?