GlueのPySparkでパーティション一覧を取得する

GlueのPySparkを使ってパーティション一覧を取得するには設定が少し必要だったので忘れないようにメモしておきます。

from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .config("hive.metastore.client.factory.class", "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory") \
    .enableHiveSupport() \
    .getOrCreate()

catalog = spark.catalog
catalog.setCurrentDatabase("dbname")

df_partition = spk.sql("SHOW PARTITIONS dbname.tablename")
split_col = split(df_partition.partition, "=")
df_partition = df_partition.withColumn("id", split_col.getItem(1))
df_partition.show()

splitでパーティションの=以降を抽出して参照できるようにしています。

+----------------+---+
| partition| id|
+----------------+---+
| partition_id=0| 0|
| partition_id=1| 1|
| partition_id=2| 2|
| partition_id=3| 3|
| partition_id=4| 4|
| partition_id=5| 5|
| partition_id=6| 6|
| partition_id=7| 7|
| partition_id=8| 8|
| partition_id=9| 9|
+----------------+---+

参照