0
0

Databricksの一時ビュー作成時のフォーマットおよびオプションの指定

Last updated at Posted at 2024-01-13

一時ビューとは

Databricksではデータフレームに対してクイックにSQLを使うために 一時ビュー(temporary view) という機能が存在します。

一時ビューはSparkセッションの中でのみ利用できるビューです。クラスターを停止するなどしてセッションを終了すると一時ビューは削除されます。デバッグなどでよく使います。

Python
diamonds = (
    spark.read.format("csv")
    .option("header", "true")
    .option("inferSchema", "true")
    .load("/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv")
)

display(diamonds)

Screenshot 2024-01-13 at 9.02.15.png

Python
diamonds.createOrReplaceTempView("diamonds")
SQL
%sql
SELECT * FROM diamonds;

Screenshot 2024-01-13 at 9.02.25.png

SQLからも一時ビューは作成できるのですが、最近以下のノートブックの文法を教えていただきました。

SQL
-- mode "FAILFAST" will abort file parsing with a RuntimeException if any malformed lines are encountered
CREATE TEMPORARY VIEW diamonds
USING CSV
OPTIONS (path "/databricks-datasets/Rdatasets/data-001/csv/ggplot2/diamonds.csv", header "true", mode "FAILFAST")

こちらで説明されているものです。マニュアルではCREATE TEMPORARY VIEWではUSINGOPTIONSは使えない感じなのですが、普通に動きます。

調べてみたら、一時ビューではフォーマットやオプションを問題なく指定できました。

一時ビューにおけるフォーマットおよびオプションの指定

こちらで説明されています。

Databricks では、SQL ユーザーが CSV ファイルを読み取る際に read_files テーブル値関数を使うことをお勧めします。 read_files は Databricks Runtime 13.1 以降で使用できます。

一時ビューを使うこともできます。 一時ビューまたは read_files を使わずに、SQL を使って CSV データを直接読み取る場合は、次の制限が適用されます。

  • データ ソース オプションを指定できません。
  • データに対してデータ スキーマを指定できない。

言い換えると一時ビューを使う、あるいはビューの作成時にread_files関数を使うことでオプションを指定できるということです。read_files関数はこちらで説明されています。read_files関数を使う場合にはフォーマットは自動で判別されます。

一時ビューを作成する際にオプションを指定できるということなので、CSV以外も試してみます。なお、オプションのmodeFAILFASTを指定することで、こちらにあるように、形式が正しくない場合には読み取りを中止するように指示しています。あとはファイルのパスをpathで指定しています。

JSON

SQL
%sql
CREATE TEMPORARY VIEW nyctaxi_tmp_view_sql
USING JSON
OPTIONS (path "/databricks-datasets/nyctaxi/sample/json/", mode "FAILFAST")
SQL
%sql
SELECT * FROM nyctaxi_tmp_view_sql;

Screenshot 2024-01-13 at 9.22.40.png

Parquet

SQL
%sql
CREATE TEMPORARY VIEW parquet_news_tmp_view_sql
USING PARQUET
OPTIONS (path "/databricks-datasets/news20.binary/data-001/training/", mode "FAILFAST")
SQL
%sql
SELECT * FROM parquet_news_tmp_view_sql;

Screenshot 2024-01-13 at 9.34.57.png

Delta

SQL
%sql
CREATE TEMPORARY VIEW delta_nyctaxi_tmp_view_sql
USING DELTA
OPTIONS (path "/databricks-datasets/nyctaxi-with-zipcodes/subsampled/", mode "FAILFAST")
SQL
%sql
SELECT * FROM delta_nyctaxi_tmp_view_sql;

ビューでのオプション指定

ビューを作成する際にオプションを指定するには、[read_files関数]を使う必要があります。

SQL
%sql
CREATE VIEW takaakiyayoi_catalog.default.parquet_news_view AS
SELECT
  *
FROM
  read_files(
    "/databricks-datasets/news20.binary/data-001/training/",
    mode = > "FAILFAST"
  )

クイックにSQLで操作したいというケースでの自由度が広がりますね。是非ご活用ください!

ちなみに普通に他の方も使われていました。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

0
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
0
0