概要
Databricks ( Spark ) にて Hive パーティションとして利用しているカラムと同じカラムのデータを保持しているソースを読み取る場合には、ソースのファイルで保持している値より Hive パーティションの値が優先されるようです。下記のような CSV ファイル(ingest_date
が2020-01-01
)を、ingest_date
が2020-01-02
の Hive パーティション(例:ingest_date=2020-01-02
)の配下に配置したところ、Spark データフレームでは ingest_date
が2020-01-02
として表示されました。本記事では、その検証結果を共有します。
a,ingest_date
1,2020-01-01
path = 'dbfs:/FileStore/manabian/hive_tet'
file_path = f'{path}/ingest_date=2020-01-02/test.txt'
動作確認
Hive パーティションと同じカラム名をもたないデータの場合
path = 'dbfs:/FileStore/manabian/hive_tet'
file_path = f'{path}/ingest_date=2020-01-02/test.txt'
data="""
a
1
""".strip()
dbutils.fs.put(file_path, data, True)
df = (
spark.read
.format("csv")
.option("header", "true")
.load(path)
)
df.display()
Hive パーティションと同じカラム名をもつデータの場合
path = 'dbfs:/FileStore/manabian/hive_tet'
file_path = f'{path}/ingest_date=2020-01-02/test.txt'
data="""
a,ingest_date
1,2020-01-01
""".strip()
dbutils.fs.put(file_path, data, True)
df = (
spark.read
.format("csv")
.option("header", "true")
.load(path)
)
df.display()
リソースを削除
dbutils.fs.rm(path,True)