【发布时间】:2019-12-30 17:31:32
【问题描述】:
两部分问题。
我有一个 pyspark 数据框,我正在从我的 azure blob 存储中的 JSON 文件列表中读取它。
在一些简单的 ETL 之后,我需要将它作为 parquet 文件从 blob 存储移动到数据湖,到目前为止很简单。
我没有成功地尝试有效地将其写入由两列定义的文件夹中,一列是日期列,另一列是 ID
使用partitionBy 让我接近
id | date | nested_json_data | path
1 | 2019-01-01 12:01:01 | {data : [data]} | dbfs:\mnt\..
1 | 2019-01-01 12:01:02 | {data : [data]} | dbfs:\mnt\..
df.write.partitionBy("id","date").('dbfs:\mnt\curated\...')
这给了我一个文件夹结构如下:
mnt --- |
-- ...\1--|
--...\1\date=2019-01-01%2012:01:01\{file}.pq
--...\1\date=2019-01-01%2012:01:02\{file}.pq
我所追求的是每个唯一 id 列的单个文件夹,每个文件按日期拆分。
mnt --- |
-- ...\1--|
--...\1 -- |
|filename_2019_01_01_12_0_01.pq
|filename_2019_01_01_12_0_02.pq
第二个问题是我的日期文件夹名称就像Date=2019-12-23 13%3A26%3A00
有没有一种方法可以在不更改我的 spark 数据帧的架构的情况下不使用它?如果我必须创建一个临时列,那很好。
【问题讨论】:
标签: python apache-spark pyspark