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