Query data | Databricks on AWS [2023/1/13時点]の翻訳です。
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
本書ではUnity Catalogにおけるデータのクエリー方法を説明します。
要件
-
ノートブック、Databricks SQLエディタを実行するために使用する計算リソースやクエリーを作成するためのデータエクスプローラワークフローは、Unity Catalogのセキュリティ要件に準拠する必要があります。
-
テーブルやビューのデータをクエリーするには、親のカタログやスキーマに対する
USAGE
権限、テーブルやビューに対するSELECT
権限が必要となります。注意
シングルユーザーアクセスモードを使用するクラスターでビューから読み込みを行うには、ユーザーは参照されるすべてのテーブルやビューに対するSELECT
権限が必要となります。
3レベルの名前空間記述
Unity Catalogにおいて、テーブルやビューは親のカタログやスキーマに格納されます。2つの異なる記述スタイルでテーブルやビューを参照することができます。カタログやスキーマを指定するためにUSE CATALOG
文とUSE
文を使用することができます。
USE CATALOG <catalog_name>;
USE SCHEMA <schema_name>;
SELECT * from <table_name>;
spark.sql("USE CATALOG <catalog_name>")
spark.sql("USE SCHEMA <schema_name>")
display(spark.table("<table_name>"))
library(SparkR)
sql("USE CATALOG <catalog_name>")
sql("USE SCHEMA <schema_name>")
display(tableToDF("<table_name>"))
spark.sql("USE CATALOG <catalog_name>")
spark.sql("USE SCHEMA <schema_name>")
display(spark.table("<table_name>"))
あるいは、3レベル名前空間記述を使うことができます。
SELECT * from <catalog_name>.<schema_name>.<table_name>;
display(spark.table("<catalog_name>.<schema_name>.<table_name>"))
library(SparkR)
display(tableToDF("<catalog_name>.<schema_name>.<table_name>"))
display(spark.table("<catalog_name>.<schema_name>.<table_name>"))
3レベルの名前空間記述を用いることで、複数のカタログやスキーマのデータに対するクエリーをシンプルなものにします。
また、<catalog_name>
をhive_metastore
に設定することで、Hiveメタストアのデータに対する3レベル名前空間記述を使用することができます。
Databricks SQLでテーブルとビューを探索する
データエクスプローラを用いることで、クラスターを実行することなしにクイックにテーブルやビューを探索することができます。
Hiveメタストアのオブジェクトに対しては、データエクスプローラを使用するために稼働中のSQLウェアハウスが必要となります。
テーブル、ビューからのSELECT
ノートブックからテーブルやビューをSELECTするには:
-
サイドバーを用いてData Science & Engineeringに切り替えます。
-
Unity Catalog用に設定されたData Science & Engineering、あるいはDatabricks Machine Learningクラスターにノートブックをアタッチします。
-
ノートブックで、Unity Catalogのテーブルやビューを参照するクエリーを作成します。ワークスペースローカルのHiveメタストアを含む複数のカタログやスキーマから容易にデータをSELECTするために、3レベルの名前空間記述を使用することができます。
注意
シングルユーザーアクセスモードを使用するクラスターでビューから読み込みを行うには、ユーザーは参照されるすべてのテーブルやビューに対するSELECT
権限が必要となります。
Databricks SQLでテーブルやビューからSELECTするには:
- サイドバーを用いてDatabricks SQLに切り替えます。
- サイドバーのSQL Editorをクリックします。
- Unity Catalog用に設定されたSQLウェアハウスを選択します。
- クエリーを構成します。クエリーにテーブルやビューを入力するには、カタログやスキーマを選択し、入力するテーブルやビューの名前をクリックします。
- Runをクリックします。
ファイルからのSELECT
外部ロケーションに格納されているデータからテーブルを作成する前にデータを探索したい場合、データエクスプローラあるいは以下のコマンドを用いることができます。
アクセス権が必要です: ロケーションに格納されているデータファイルの一覧を取得するために、クラウドストレージパスと関連づけられている外部ロケーションに対するREAD FILES
権限が必要となります。
SQL
-
クラウドストレージパスのファイルを一覧します:
SQLLIST 's3://<path_to_files>';
-
指定したパスのファイルのデータをクエリーします:
SQLSELECT * FROM <format>.'s3://<path_to_files>';
Python
-
クラウドストレージパスのファイルを一覧します:
Pythondisplay(spark.sql("LIST 's3://<path_to_files>'"))
-
指定したパスのファイルのデータをクエリーします:
Pythondisplay(spark.read.load("s3://<path_to_files>"))
R
-
クラウドストレージパスのファイルを一覧します:
Rlibrary(SparkR) display(sql("LIST 's3://<path_to_files>'"))
-
指定したパスのファイルのデータをクエリーします:
Rlibrary(SparkR) display(loadDF("s3://<path_to_files>"))
Scala
-
クラウドストレージパスのファイルを一覧します:
Scaladisplay(spark.sql("LIST 's3://<path_to_files>'"))
-
指定したパスのファイルのデータをクエリーします:
Scaladisplay(spark.read.load("s3://<path_to_files>"))