【问题标题】:Spark 2.3.3 outputing parquet to S3Spark 2.3.3 将镶木地板输出到 S3
【发布时间】:2019-07-15 17:58:05
【问题描述】:

不久前,我遇到了一个问题,即直接将 parquets 输出到 S3 并不可行,我需要一个缓存层才能最终将 parquets 复制到 S3,请参阅post

我知道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')

(我知道这是旧代码,可能不再相关)

【问题讨论】:

    标签: apache-spark amazon-s3 pyspark parquet


    【解决方案1】:

    您将需要 Hadoop 3.1、已应用此 PR 的 Spark 2.4 构建:https://github.com/apache/spark/pull/24970

    一些具有自己的 Spark 构建的下游产品可以执行此操作 (HDP-3.1),但它(还没有)在 apache 构建中。

    然后您需要配置 parquet 以使用新的桥接提交者(Parquet 只允许 Parquet 提交者的子类),并选择三个(长篇故事)中的特定 S3A 提交者。 Staging 提交者是我推荐的(a)基于 Netflix 使用的提交者和(b)我测试最多的提交者。

    没有根本原因不能将相同的 PR 应用于 Spark 2.3,只是没有人尝试过。

    【讨论】:

      猜你喜欢
      • 2016-07-04
      • 2016-06-16
      • 1970-01-01
      • 2021-09-24
      • 2020-06-24
      • 2017-01-22
      • 1970-01-01
      • 2023-03-24
      • 2020-03-11
      相关资源
      最近更新 更多