Spark 2.3.3 输出镶木地板到 S3
Spark 2.3.3 outputing parquet to S3
前一段时间我遇到了直接将镶木地板输出到 S3 并不可行的问题,在我最终将镶木地板复制到 S3 之前我需要一个缓存层看到这个
我知道 HADOOP-13786 应该可以解决这个问题,它似乎在 HDFS >3.1.0
中实现了
现在的问题是我如何在 spark 2.3.3 中使用它,据我所知,spark 2.3.3 带有 hdfs 2.8.5。我通常使用 flintrock 在 AWS 上编排我的集群。是否只是在 flintrock 配置中将 HDFS 设置为 3.1.1 然后我得到了所有好东西?或者我是否仍然必须像以前那样在代码中设置一些东西。例如像这样:
conf = SparkConf().setAppName(appname)\
.setMaster(master)\
.set('spark.executor.memory','13g')\
.set('spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version','2')\
.set('fs.s3a.fast.upload','true')\
.set('fs.s3a.fast.upload.buffer','disk')\
.set('fs.s3a.buffer.dir','/tmp/s3a')
(我知道这是旧代码,可能不再相关)
您将需要 Hadoop 3.1、和 Spark 2.4 构建,其中应用了此 PR:https://github.com/apache/spark/pull/24970
一些具有自己的 Spark 构建的下游产品执行此操作 (HDP-3.1),但它(尚未)在 apache 构建中。
然后您需要配置 parquet 以使用新的桥接提交程序(Parquet 仅允许 Parquet 提交程序的子类),以及 select 三个特定的 S3A 提交程序(长话短说)以使用。 Staging committer 是我推荐的一个,因为它 (a) 基于 Netflix 使用的一个和 (b) 我测试过最多的那个。
相同的 PR 不能应用于 Spark 2.3 没有根本原因,只是没有人尝试过。
前一段时间我遇到了直接将镶木地板输出到 S3 并不可行的问题,在我最终将镶木地板复制到 S3 之前我需要一个缓存层看到这个
我知道 HADOOP-13786 应该可以解决这个问题,它似乎在 HDFS >3.1.0
中实现了现在的问题是我如何在 spark 2.3.3 中使用它,据我所知,spark 2.3.3 带有 hdfs 2.8.5。我通常使用 flintrock 在 AWS 上编排我的集群。是否只是在 flintrock 配置中将 HDFS 设置为 3.1.1 然后我得到了所有好东西?或者我是否仍然必须像以前那样在代码中设置一些东西。例如像这样:
conf = SparkConf().setAppName(appname)\
.setMaster(master)\
.set('spark.executor.memory','13g')\
.set('spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version','2')\
.set('fs.s3a.fast.upload','true')\
.set('fs.s3a.fast.upload.buffer','disk')\
.set('fs.s3a.buffer.dir','/tmp/s3a')
(我知道这是旧代码,可能不再相关)
您将需要 Hadoop 3.1、和 Spark 2.4 构建,其中应用了此 PR:https://github.com/apache/spark/pull/24970
一些具有自己的 Spark 构建的下游产品执行此操作 (HDP-3.1),但它(尚未)在 apache 构建中。
然后您需要配置 parquet 以使用新的桥接提交程序(Parquet 仅允许 Parquet 提交程序的子类),以及 select 三个特定的 S3A 提交程序(长话短说)以使用。 Staging committer 是我推荐的一个,因为它 (a) 基于 Netflix 使用的一个和 (b) 我测试过最多的那个。
相同的 PR 不能应用于 Spark 2.3 没有根本原因,只是没有人尝试过。