Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark Spark partitionBy |按列值而不是列名保存={value}_Apache Spark_Apache Spark Sql - Fatal编程技术网

Apache spark Spark partitionBy |按列值而不是列名保存={value}

Apache spark Spark partitionBy |按列值而不是列名保存={value},apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我正在使用scala和spark,我的spark版本是2.4.3 我的dataframe看起来像这样,还有其他一些列我没有放进去,也不相关 +-----------+---------+---------+ |ts_utc_yyyy|ts_utc_MM|ts_utc_dd| +-----------+---------+---------+ |2019 |01 |20 | |2019 |01 |13 | |2019

我正在使用scala和spark,我的spark版本是2.4.3

我的dataframe看起来像这样,还有其他一些列我没有放进去,也不相关

+-----------+---------+---------+
|ts_utc_yyyy|ts_utc_MM|ts_utc_dd|
+-----------+---------+---------+
|2019       |01       |20       |
|2019       |01       |13       |
|2019       |01       |12       |
|2019       |01       |19       |
|2019       |01       |19       |
+-----------+---------+---------+
基本上,我想以一种带扣的格式存储数据,如

2019年1月12日数据

2019年1月13日/数据

2019年1月19日数据

2019年1月20日/数据

我正在使用下面的代码片段

但问题是它与列名称一起存储,如下所示

ts_utc_yyyy=2019/ts_utc_MM=01/ts_utc_dd=12/数据

ts_utc_yyyy=2019/ts_utc_MM=01/ts_utc_dd=13/数据

ts_utc_yyyy=2019/ts_utc_MM=01/ts_utc_dd=19/数据

ts_utc_yyyy=2019/ts_utc_MM=01/ts_utc_dd=20/数据

如果文件夹名称中没有列名,如何保存


谢谢。

这是预期的行为。Spark使用配置单元分区,因此它使用此约定进行编写,该约定支持分区发现、筛选和修剪。简而言之,它通过确保读取的数据量最小来优化查询


Spark并不是为您所需要的输出而设计的。解决此问题的最简单方法是使用一个下游任务,通过等号拆分来重命名目录。

这是预期的行为。Spark使用配置单元分区,因此它使用此约定进行编写,该约定支持分区发现、筛选和修剪。简而言之,它通过确保读取的数据量最小来优化查询


Spark并不是为您所需要的输出而设计的。解决此问题的最简单方法是使用一个下游任务,通过等号拆分来重命名目录。

我希望您尝试在HDFS上存储。是吗?我正在使用谷歌存储服务在生产中保存文件。在开发机器文件系统(Mac)中也可以看到同样的行为,我希望您尝试存储在HDFS上。是吗?我正在使用谷歌存储服务在生产中保存文件。在开发机器文件系统(Mac)中也可以看到同样的行为
  df.write
  .partitionBy("ts_utc_yyyy","ts_utc_MM","ts_utc_dd")
    .format("csv")
    .save(outputPath)