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中外部配置单元表的Pyspark写入不是并行的_Apache Spark_Amazon S3_Hive_Pyspark_Emr - Fatal编程技术网

Apache spark 对S3中外部配置单元表的Pyspark写入不是并行的

Apache spark 对S3中外部配置单元表的Pyspark写入不是并行的,apache-spark,amazon-s3,hive,pyspark,emr,Apache Spark,Amazon S3,Hive,Pyspark,Emr,我在s3中定义了一个外部配置单元表 LOCATION 's3n://bucket/path/' 在聚合一组数据的pyspark作业结束时写入此表时,写入配置单元的速度非常慢,因为只有1个执行器/容器用于写入。当写入HDFS支持的表时,写入是并行进行的,速度要快得多 我尝试使用s3a路径定义表,但是由于一些模糊的错误,我的工作失败了 这是在AmazonEMR5.0(Hadoop2.7)和PySpark2.0上实现的,但我在以前的EMR/spark版本中也遇到过同样的问题 是否有一个配置或替代库,

我在s3中定义了一个外部配置单元表

LOCATION 's3n://bucket/path/'
在聚合一组数据的pyspark作业结束时写入此表时,写入配置单元的速度非常慢,因为只有1个执行器/容器用于写入。当写入HDFS支持的表时,写入是并行进行的,速度要快得多

我尝试使用s3a路径定义表,但是由于一些模糊的错误,我的工作失败了

这是在AmazonEMR5.0(Hadoop2.7)和PySpark2.0上实现的,但我在以前的EMR/spark版本中也遇到过同样的问题


是否有一个配置或替代库,我可以使用它来提高书写效率?

我猜您使用的是拼花地板。
DirectParquetOutputCommitter
,以避免潜在的数据丢失问题。实际发生在2016年4月

这意味着您写入S3的数据将首先保存在一个临时文件夹中,然后“移动”到其最终位置。不幸的是,S3中的“移动”==“复制和删除”,速度相当慢。更糟糕的是,这最后的“移动”只由驾驶员完成


如果您不想争先恐后地重新添加该类,那么必须先写入本地HDF,然后再复制数据(我建议这样做)。在HDFS中“移动”~“重命名”,因此不需要时间。

我肯定会使用相同的方法。用EMR/HDFS编写要比复制到S3便宜得多。感谢您的回复,尽管这至少证实了我构思的写入HDFS并移动到S3的方法。Orc格式使用
FileOutputCommitter
,它将再次创建临时文件,然后移动。然而,这是一个稍微容易的情况。您可以尝试配置以使用。