Переименуйте папку, созданную в результате разбиенияBy - PullRequest
0 голосов
/ 27 апреля 2020

Я добавляю столбец для метки времени, когда задание было выполнено на клею. Я хочу сохранить его, используя partitionBy(load_timestamp). Папка была создана как например load_timestamp=2020-04-27 03:21:54. Я хочу, чтобы папка была названа как table_name=2020-04-27 03:21:54. Возможно ли это?

enriched = df.withColumn("load_timestamp", unix_timestamp(lit(timestamp),'yyyy-MM-dd HH:mm:ss').cast("timestamp"))
enriched.write.partitionBy("load_timestamp").format("parquet").mode("append").save("s3://s3-enriched-bucket/" + job_statement[0])

1 Ответ

1 голос
/ 27 апреля 2020

По умолчанию Spark создает directories на основе столбца раздела, т.е.

<partition_column_name>=<value>

Easiest way, чтобы исправить это сохранить имя столбца как table_name и использовать в разделении по предложению .

enriched = df.withColumn("table_name", unix_timestamp(lit(timestamp),'yyyy-MM-dd HH:mm:ss').cast("timestamp"))

enriched.write.partitionBy("table_name").format("parquet").mode("append").save("s3://s3-enriched-bucket/" + job_statement[0])

Other way would be:

Переименование каталогов с помощью итерации с использованием hadoop.fs file API и изменить load_timestamp на table_name.

...