LoginSignup
0
0

More than 1 year has passed since last update.

Databricks(Spark)にてDelta Lake形式・Parquet形式でAnalyze Tableを実行した際に格納されるデータの調査結果

Last updated at Posted at 2021-08-01

概要

Databricks(Spark)にてDelta Lake形式・Parquet形式でAnalyze Tableを実行した際に格納されるデータの調査結果を共有します。Analyze Table実行後に、Hive Metastoreデータベース(MySQL)のTABLE_PARAMSテーブルとPARTITION_PARAMSテーブルにデータが格納され、SparkからDESC EXTENDEDにより確認できます。

統計情報の種類としては3種類あり、Delta Lake形式では、パーティションの統計情報をサポートしていないようです。ただ、Sparkにてパーティションの統計情報がどのように利用されるかを確認できませんでした。

  1. テーブルの統計情報
  2. カラムの統計情報
  3. パーティションの統計情報

Sparkの統計情報に関しては下記の資料が参考になります。

引用元:Spark SQL Beyond Official Documentation

詳細は下記のGithub pagesのページをご確認ください。

コードを実行したい方は、下記のdbcファイルを取り込んでください。

https://github.com/manabian-/databricks_tecks_for_qiita/blob/main/tecks/survey_about_analyze_table/dbc/survey_about_analyze_table.dbc

実行環境

databricks runtime: 8.3.x-scala2.12
Python version: 3.8.8
Pyspark version: 3.1.2.dev0

データの確認

Parquet形式におけるテーブルの統計情報

DESC EXTENDEDの実行結果

DESC EXTENDED students_parquet;

image.png

Hive Metastoreデータベースへのクエリ実行結果

SET @TABLE_NAME="students_parquet";

SELECT 
    target.* 
    FROM 
        TABLE_PARAMS AS target
    INNER JOIN 
        TBLS AS master
        on target.TBL_ID = master.TBL_ID
        and master.TBL_NAME = @TABLE_NAME
;

image.png

Delta Lake形式におけるテーブルの統計情報

DESC EXTENDEDの実行結果

統計情報が確認できませんでした。

DESC EXTENDED students_delta;

image.png

Hive Metastoreデータベースへのクエリ実行結果

SET @TABLE_NAME="students_delta";

SELECT 
    target.* 
    FROM 
        TABLE_PARAMS AS target
    INNER JOIN 
        TBLS AS master
        on target.TBL_ID = master.TBL_ID
        and master.TBL_NAME = @TABLE_NAME
;

image.png

Parquet形式におけるカラムの統計情報

DESC EXTENDEDの実行結果

DESC EXTENDED students_delta student_id;

image.png

Hive Metastoreデータベースへのクエリ実行結果

SET @TABLE_NAME="students_parquet";

SELECT 
    target.* 
    FROM 
        TABLE_PARAMS AS target
    INNER JOIN 
        TBLS AS master
        on target.TBL_ID = master.TBL_ID
        and master.TBL_NAME = @TABLE_NAME
;

image.png

Delta Lake形式におけるカラムの統計情報

DESC EXTENDEDの実行結果

DESC EXTENDED students_parquet student_id;

image.png

Hive Metastoreデータベースへのクエリ実行結果

SET @TABLE_NAME="students_delta";

SELECT 
    target.* 
    FROM 
        TABLE_PARAMS AS target
    INNER JOIN 
        TBLS AS master
        on target.TBL_ID = master.TBL_ID
        and master.TBL_NAME = @TABLE_NAME
;

image.png

Parquet形式におけるパーティションの統計情報

DESC EXTENDEDの実行結果

DESC EXTENDED students_parquet PARTITION (student_id = 111111);

image.png

Hive Metastoreデータベースへのクエリ実行結果

SET @TABLE_NAME="students_parquet";

SELECT 
    target.* 
    FROM 
        PARTITION_PARAMS AS target
    INNER JOIN
        PARTITIONS AS master
        on
            target.PART_ID = master.PART_ID
    INNER JOIN 
        TBLS AS master2
        on master.TBL_ID = master2.TBL_ID
        and master2.TBL_NAME = @TABLE_NAME
;

image.png

Delta Lake形式におけるパーティションの統計情報

DESC EXTENDEDの実行結果

データを確認できませんでした。

DESC EXTENDED students_delta PARTITION (student_id = 111111);

image.png

Hive Metastoreデータベースへのクエリ実行結果

データを確認できませんでした。

SET @TABLE_NAME="students_delta";

--レコードを取得できない想定
SELECT 
    target.* 
    FROM 
        PARTITION_PARAMS AS target
    INNER JOIN
        PARTITIONS AS master
        on
            target.PART_ID = master.PART_ID
    INNER JOIN 
        TBLS AS master2
        on master.TBL_ID = master2.TBL_ID
        and master2.TBL_NAME = @TABLE_NAME
;
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