0
0

Databricks における spark_catalog というオブジェクトに関する調査

Posted at

概要

Databricks における spark_catalog がどういったオブジェクトであるかを調査しました。調査結果と spark_catalog を確認できるケースを記載します。

調査結果

spark_catalog とは hive_metastore のシノニムのようなものであると解釈しました。spark_catalog という記述を実施するのではなく hive_metastore と記載することが望ましいです。

%sql
SELECT
  -- spark_catalog と記載しても動作する
  spark_catalog.functions_test_01.get_abc() AS spark_catalog,
  
  -- カタログエクスプローラーで確認できる hive_metastore と記載することが望ましい 
  hive_metastore.functions_test_01.get_abc() AS hive_metastore

なお、ドキュメントにて予約語として記載されておりませんでしたが、 spark_catalog というカタログの作成をできませんでした。

%sql
CREATE CATALOG spark_catalog;
com.databricks.backend.common.rpc.SparkDriverExceptions$SQLExecutionException: org.apache.spark.sql.AnalysisException: [MODIFY_BUILTIN_CATALOG] Modifying built-in catalog spark_catalog is not supported.

image.png

image.png

引用元:Reserved words and schemas - Azure Databricks - Databricks SQL | Microsoft Learn

spark_catalog を確認できるケース

1. Databricks の current_catalog 関数のドキュメントの Examples

以前から違和感を感じておりましたが、下記のように spark_catalog がリターンされるという実行例が記載されています。

> SELECT current_catalog();
spark_catalog

image.png

引用元:current_catalog function | Databricks on AWS

2. Unity Catalog が有効でないワークスペースにて関数定義の表示結果

関数名として spark_catalog が記載されていることを確認できました。

%sql
CREATE SCHEMA IF NOT EXISTS functions_test_01;

CREATE OR REPLACE FUNCTION functions_test_01.get_abc()
  RETURNS STRING
  LANGUAGE SQL
  RETURN 'abc'
;

DESC FUNCTION EXTENDED functions_test_01.get_abc;
Function:      spark_catalog.functions_test_01.get_abc

image.png

関数の定義を確認する際、 hive_metastore と記述する場合には、spark_catalog と表示されませんでした。

%sql
DESC FUNCTION EXTENDED hive_metastore.functions_test_01.get_abc;
Function:      hive_metastore.functions_test_01.get_abc

image.png

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