Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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 如何通过列值组合对S3输出文件进行分区?_Apache Spark_Amazon S3_Pyspark_Aws Glue - Fatal编程技术网

Apache spark 如何通过列值组合对S3输出文件进行分区?

Apache spark 如何通过列值组合对S3输出文件进行分区?,apache-spark,amazon-s3,pyspark,aws-glue,Apache Spark,Amazon S3,Pyspark,Aws Glue,我有数据,我正在爬进AWS胶水。在那里,我使用PySpark并将其转换为拼花地板格式。我的原始数据是CSV,如下所示: id、日期、数据1、202003、x2、202003、y1、202004、z 等等 我能够成功地转换数据,但我不确定获得所需输出的最佳方法。输出应该在S3中按id和日期分割。因此,它应该有如下内容: s3://bucket/outputdata/{id}{date}/{data}.parquet 其中id和date是数据中的实际id和日期值。其中文件的名称显然无关紧要,我只想能

我有数据,我正在爬进AWS胶水。在那里,我使用PySpark并将其转换为拼花地板格式。我的原始数据是CSV,如下所示:

id、日期、数据1、202003、x2、202003、y1、202004、z
等等

我能够成功地转换数据,但我不确定获得所需输出的最佳方法。输出应该在S3中按id和日期分割。因此,它应该有如下内容:

s3://bucket/outputdata/{id}{date}/{data}.parquet

其中
id
date
是数据中的实际id和日期值。其中文件的名称显然无关紧要,我只想能够在S3对象前缀中创建“文件夹”,并在其中分割数据

我对AWS胶水非常陌生,我有一种感觉,我错过了一些非常明显的东西


提前感谢。

您可以通过连接两个现有列,然后在写入时按新列进行分区来创建分区列,例如

from pyspark.sql.functions import concat, col, lit
df1 = df.withColumn('p', concat(col('id'), lit('_'), col('date')))
df1.write.partitionBy('p').parquet('s3://bucket/outputdata')

谢谢我会给它一个尝试,如果它的工作,我会标记正确。