【问题标题】:Partitioned data format in s3 buckets3 存储桶中的分区数据格式
【发布时间】:2020-11-25 04:31:51
【问题描述】:

在以分区格式将数据写入 S3 存储桶时,文件夹被创建为year=2020/Month=10

我想要名为year2020/Month10的文件夹

【问题讨论】:

  • 为什么要这样命名文件夹? spark 不提供重命名分区文件夹的选项。这是预期和期望的行为。
  • 我们收到相同格式的原始分区文件(year2020/month10),因此我们希望在每个桶中保持相同的结构
  • 我在任何地方都找不到任何关于 Spark 中自定义分区的信息。如果您发现了什么,请自行回答这个问题。 spark.apache.org/docs/2.4.0/…

标签: amazon-web-services amazon-s3 pyspark aws-glue pyspark-dataframes


【解决方案1】:

如果您以 static partitions 而不是 dynamic partitions 的身份加载,那么您可以获得预期的输出。

Example:

df=spark.createDataFrame([(1,'a','2020','10'),(2,'b','2020','10')],['id','name','year','month'])

from pyspark.sql.functions import *

df.show()
#+---+----+----+-----+
#| id|name|year|month|
#+---+----+----+-----+
#|  1|   a|2020|   10|
#|  2|   b|2020|   10|
#+---+----+----+-----+

#get year,hour value and assign to variable
year=df.select("year").collect()[0][0]
month=df.select("month").collect()[0][0]

#we are going to create directories 
df.write.format("parquet").mode("overwrite").save(f"year{year}/month{month}")
#year2020/month10/parquet files

【讨论】:

    猜你喜欢
    • 2020-04-19
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多