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
Amazon s3 在s3 pyspark作业中创建单个拼花地板文件_Amazon S3_Pyspark_Parquet - Fatal编程技术网

Amazon s3 在s3 pyspark作业中创建单个拼花地板文件

Amazon s3 在s3 pyspark作业中创建单个拼花地板文件,amazon-s3,pyspark,parquet,Amazon S3,Pyspark,Parquet,我已经编写了一个pyspark程序,从cassandra读取数据并写入AWSS3。在写入s3之前,我必须进行重新分区(1)或合并(1),因为这会创建一个文件,否则会在s3中创建多个拼花文件。 使用重新分区(1)或合并(1)有性能问题,我觉得创建一个大分区对于大数据来说不是一个好的选择。 有什么方法可以在s3中创建一个文件,但不会影响性能?coalesce(1)或重新分区(1)会将所有数据放在一个分区上(使用重新分区时,与coalesce相比,使用重新分区时会有一个洗牌步骤)。在这种情况下,只有一

我已经编写了一个pyspark程序,从cassandra读取数据并写入AWSS3。在写入s3之前,我必须进行重新分区(1)或合并(1),因为这会创建一个文件,否则会在s3中创建多个拼花文件。 使用重新分区(1)或合并(1)有性能问题,我觉得创建一个大分区对于大数据来说不是一个好的选择。 有什么方法可以在s3中创建一个文件,但不会影响性能?

coalesce(1)
重新分区(1)
会将所有数据放在一个分区上(使用
重新分区时,与
coalesce
相比,使用
重新分区时会有一个洗牌步骤)。在这种情况下,只有一个工作人员需要写入您的所有数据,这就是您出现性能问题的原因—您已经解决了

这是使用Spark在S3上编写1个文件的唯一方法。目前,没有其他方法可以使用just Spark

使用Python(或Scala),您可以做一些其他事情。例如,您使用spark编写所有文件,而不更改分区数,然后:

  • 您可以使用python获取文件
  • 将文件连接为一个
  • 你可以在S3上上传一个文件

它适用于CSV,而不适用于非顺序文件类型。

如果您只需要一个输出文件,则可以使用coalesce(1),另一方面,如果您希望最终得到n个大小相同的零件文件,最好是您的文件,则可以使用重新分区(n)磁盘中的输出大小应在128MB到1GB之间,以便spark在下次读取时有效地处理它们。