use*_*189 6 hadoop amazon-s3 amazon-emr apache-spark apache-spark-sql
Spark 2.2.0中不再提供DirectFileOutputCommitter.这意味着写入S3需要花费很长时间(3小时vs 2分钟).通过这样做,我可以通过在spark-shell中将FileOutputCommitter版本设置为2来解决这个问题,
spark-shell --conf spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2
Run Code Online (Sandbox Code Playgroud)
同样不适用于spark-sql
spark-sql --conf spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2
Run Code Online (Sandbox Code Playgroud)
上面的命令似乎是设置版本= 2,但是当执行查询时,它仍然显示版本1行为.
两个问题,
1)如何使用spark-sql获取FileOutputCommitter版本2的行为?
2)我有没有办法在spark 2.2.0中使用DirectFileOutputCommitter?[我很好,数据丢失的可能性非为零]
相关物品:
Avi*_*rya 13
我受到了这个问题的打击.Spark不鼓励使用DirectFileOutputCommitter,因为它可能会导致数据在比赛情况下丢失.算法版本2没有太大帮助.
我试图使用gzip来保存s3中的数据而不是snappy压缩,这给了一些好处.
这里真正的问题是第一个中的spark写入s3://<output_directory>/_temporary/0然后将数据从临时复制到输出.这个过程在s3中相当缓慢,(通常为6MBPS)因此,如果您获得大量数据,您将获得相当大的减速.
另一种方法是首先写入HDFS,然后使用distcp/s3distcp将数据复制到s3.
此外,您可以寻找Netflix提供的解决方案.
我没有评估过.
| 归档时间: |
|
| 查看次数: |
4936 次 |
| 最近记录: |