Python 如何使数据帧分区在S3键名中包含文字冒号而不是编码的(%3A)冒号
在pyspark中,我有一个数据框,其中包含一个日期列,日期被截断为当天Python 如何使数据帧分区在S3键名中包含文字冒号而不是编码的(%3A)冒号,python,apache-spark,pyspark,apache-spark-sql,pyspark-sql,Python,Apache Spark,Pyspark,Apache Spark Sql,Pyspark Sql,在pyspark中,我有一个数据框,其中包含一个日期列,日期被截断为当天 # +-------------------+ # |d | # +-------------------+ # |2018-04-07 00:00:00| # +-------------------+ 当我这样做时: df.write.partitionBy('d')
# +-------------------+
# |d |
# +-------------------+
# |2018-04-07 00:00:00|
# +-------------------+
当我这样做时:
df.write.partitionBy('d').parquet('s3://somebucket/out/')
。。。我希望能找到名为:
s3://somebucket/out/d=2018-04-07 00:00:00/part-*-c*.snappy.parquet
。。。但是,我发现:
s3://somebucket/out/d=2018-04-07 00%3A00%3A00/part-*-c*.snappy.parquet
(请注意“%3A”而不是“:”)
这对雅典娜/hive/etc分区造成了严重破坏
有没有办法让pyspark使用实冒号而不是将其编码为%3A?如何更改日期格式?事实上,你甚至不需要时间信息,所以你可以简单地去掉那部分…@ErnestKiwele-当然。能否在.partitionBy中指定日期格式?还是最好在写入之前在数据帧上选择?如果是时间戳,我只需更改列的数据类型,如果是字符串,则更改格式。是,在调用
之前。编写