s3 存储桶中的分区数据格式
Posted
技术标签:
【中文标题】s3 存储桶中的分区数据格式【英文标题】:Partitioned data format in s3 bucket 【发布时间】:2020-11-25 04:31:51 【问题描述】:在以分区格式将数据写入 S3 存储桶时,文件夹被创建为year=2020/Month=10
。
我想要名为year2020/Month10
的文件夹
【问题讨论】:
为什么要这样命名文件夹? spark 不提供重命名分区文件夹的选项。这是预期和期望的行为。 我们收到相同格式的原始分区文件(year2020/month10),因此我们希望在每个桶中保持相同的结构 我在任何地方都找不到任何关于 Spark 中自定义分区的信息。如果您发现了什么,请自行回答这个问题。 spark.apache.org/docs/2.4.0/… 【参考方案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"yearyear/monthmonth")
#year2020/month10/parquet files
【讨论】:
以上是关于s3 存储桶中的分区数据格式的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery 中的 Hive 分区 LAYOUT 表格式