【问题标题】:Where Apache Spark does the compression on output?Apache Spark 在哪里对输出进行压缩?
【发布时间】:2021-09-30 12:37:22
【问题描述】:

我们有一个在独立集群模式下运行的 Spark 作业,它从 HDFS 读取数据并使用我们的自定义压缩器组件进行压缩,并将 .zip 文件写入 Azure blob 存储。我们的 Spark 和 HDFS 托管在同一个数据中心(本地)。

例如,Spark 作业正在从本地 HDFS 读取 8 GB 文件并在 Azure blob 存储上创建 3 GB .zip,在这种情况下,Spark 是否会将 8 GB 文件复制到 Azure blob 存储,然后将其压缩到一个 3 GB .zip 文件,或者压缩是否发生在执行程序/工作程序节点并且只有压缩数据 (3 GB) 将发送到 Azure blob 存储?我想了解在私有本地存储到 Azure 存储之间发生的数据传输量,是 3 GB 还是 8 GB?

下面是代码sn-p,

sparkSession
      .read
      .schema(getInputSchema)
      .option("escape", "\"")
      .option("quote", "\"")
      .csv(hdfsPath)
      .write
      .repartition(1)
      .option("escape", "\"")
      .option("quote", "\"")
      .option("header", "true")
      .option("compression", "com.explore.compress.CustomZipCodec")
      .partitionBy("colum1")
      .csv(azureBlobPath)

补充一下,我们使用的是apache-spark-2.3.x

【问题讨论】:

  • 你能接受答案或说明为什么不能吗?谢谢

标签: azure apache-spark apache-spark-sql azure-blob-storage


【解决方案1】:

压缩是程序化的,将通过 Executor 在 Worker 上进行。因此,在 prem 和 3gb 上转移到了 azure。

【讨论】:

    猜你喜欢
    • 2020-04-09
    • 1970-01-01
    • 2012-02-19
    • 2016-12-20
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2013-06-18
    • 1970-01-01
    相关资源
    最近更新 更多