1
0

More than 1 year has passed since last update.

Unity Catalogにおけるデータのクエリー

Posted at

Query data | Databricks on AWS [2023/1/13時点]の翻訳です。

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

本書ではUnity Catalogにおけるデータのクエリー方法を説明します。

要件

  • ノートブック、Databricks SQLエディタを実行するために使用する計算リソースやクエリーを作成するためのデータエクスプローラワークフローは、Unity Catalogのセキュリティ要件に準拠する必要があります。

  • テーブルやビューのデータをクエリーするには、親のカタログやスキーマに対するUSAGE権限、テーブルやビューに対するSELECT権限が必要となります。

    注意
    シングルユーザーアクセスモードを使用するクラスターでビューから読み込みを行うには、ユーザーは参照されるすべてのテーブルやビューに対するSELECT権限が必要となります。

3レベルの名前空間記述

Unity Catalogにおいて、テーブルやビューは親のカタログやスキーマに格納されます。2つの異なる記述スタイルでテーブルやビューを参照することができます。カタログやスキーマを指定するためにUSE CATALOG文とUSE文を使用することができます。

SQL
USE CATALOG <catalog_name>;
USE SCHEMA <schema_name>;
SELECT * from <table_name>;
Python
spark.sql("USE CATALOG <catalog_name>")
spark.sql("USE SCHEMA <schema_name>")

display(spark.table("<table_name>"))
R
library(SparkR)

sql("USE CATALOG <catalog_name>")
sql("USE SCHEMA <schema_name>")

display(tableToDF("<table_name>"))
Scala
spark.sql("USE CATALOG <catalog_name>")
spark.sql("USE SCHEMA <schema_name>")

display(spark.table("<table_name>"))

あるいは、3レベル名前空間記述を使うことができます。

SQL
SELECT * from <catalog_name>.<schema_name>.<table_name>;
Python
display(spark.table("<catalog_name>.<schema_name>.<table_name>"))
R
library(SparkR)

display(tableToDF("<catalog_name>.<schema_name>.<table_name>"))
Scala
display(spark.table("<catalog_name>.<schema_name>.<table_name>"))

3レベルの名前空間記述を用いることで、複数のカタログやスキーマのデータに対するクエリーをシンプルなものにします。

また、<catalog_name>hive_metastoreに設定することで、Hiveメタストアのデータに対する3レベル名前空間記述を使用することができます。

Databricks SQLでテーブルとビューを探索する

データエクスプローラを用いることで、クラスターを実行することなしにクイックにテーブルやビューを探索することができます。

  1. データエクスプローラを開くには、サイドバーのデータをクリックします。
  2. データエクスプローラでは、テーブルやビューを参照するためにカタログやスキーマを選択します。

Hiveメタストアのオブジェクトに対しては、データエクスプローラを使用するために稼働中のSQLウェアハウスが必要となります。

テーブル、ビューからのSELECT

ノートブックからテーブルやビューをSELECTするには:

  1. サイドバーを用いてData Science & Engineeringに切り替えます。

  2. Unity Catalog用に設定されたData Science & Engineering、あるいはDatabricks Machine Learningクラスターにノートブックをアタッチします。

  3. ノートブックで、Unity Catalogのテーブルやビューを参照するクエリーを作成します。ワークスペースローカルのHiveメタストアを含む複数のカタログやスキーマから容易にデータをSELECTするために、3レベルの名前空間記述を使用することができます。

    注意
    シングルユーザーアクセスモードを使用するクラスターでビューから読み込みを行うには、ユーザーは参照されるすべてのテーブルやビューに対するSELECT権限が必要となります。

Databricks SQLでテーブルやビューからSELECTするには:

  1. サイドバーを用いてDatabricks SQLに切り替えます。
  2. サイドバーのSQL Editorをクリックします。
  3. Unity Catalog用に設定されたSQLウェアハウスを選択します。
  4. クエリーを構成します。クエリーにテーブルやビューを入力するには、カタログやスキーマを選択し、入力するテーブルやビューの名前をクリックします。
  5. Runをクリックします。

ファイルからのSELECT

外部ロケーションに格納されているデータからテーブルを作成する前にデータを探索したい場合、データエクスプローラあるいは以下のコマンドを用いることができます。

アクセス権が必要です: ロケーションに格納されているデータファイルの一覧を取得するために、クラウドストレージパスと関連づけられている外部ロケーションに対するREAD FILES権限が必要となります。

SQL

  1. クラウドストレージパスのファイルを一覧します:

    SQL
    LIST 's3://<path_to_files>';
    
  2. 指定したパスのファイルのデータをクエリーします:

    SQL
    SELECT * FROM <format>.'s3://<path_to_files>';
    

Python

  1. クラウドストレージパスのファイルを一覧します:

    Python
    display(spark.sql("LIST 's3://<path_to_files>'"))
    
  2. 指定したパスのファイルのデータをクエリーします:

    Python
    display(spark.read.load("s3://<path_to_files>"))
    

R

  1. クラウドストレージパスのファイルを一覧します:

    R
    library(SparkR)
    
    display(sql("LIST 's3://<path_to_files>'"))
    
  2. 指定したパスのファイルのデータをクエリーします:

    R
    library(SparkR)
    
    display(loadDF("s3://<path_to_files>"))
    

Scala

  1. クラウドストレージパスのファイルを一覧します:

    Scala
    display(spark.sql("LIST 's3://<path_to_files>'"))
    
  2. 指定したパスのファイルのデータをクエリーします:

    Scala
    display(spark.read.load("s3://<path_to_files>"))
    

次のステップ

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