Apache spark saveAsTextFile在foreachRDD中的驱动程序或工作程序上执行。

Apache spark saveAsTextFile在foreachRDD中的驱动程序或工作程序上执行。,apache-spark,streaming,Apache Spark,Streaming,下面是我的代码片段。我有一个数据流,我正试图将其保存到HDFS。只是想知道压缩的有效方法 pairedDStream.foreachRDD { rdd => val time = Calendar.getInstance.getTimeInMillis; val textOutputFolder = outputDir + "/output-" + time if (args.length == 4) { val compress

下面是我的代码片段。我有一个数据流,我正试图将其保存到HDFS。只是想知道压缩的有效方法

    pairedDStream.foreachRDD { rdd =>        
    val time = Calendar.getInstance.getTimeInMillis;
    val textOutputFolder = outputDir + "/output-" + time
    if (args.length == 4) {
      val compressionCodec = args(3)
      rdd.saveAsTextFile(textOutputFolder, CommonUtils.getCompressionCodec(compressionCodec))
    } else {
      rdd.saveAsTextFile(textOutputFolder, CommonUtils.getCompressionCodec(null))
    }
  }

rdd.saveAsTextFile
是在工作节点上执行的,实际上所有rdd操作都是在
dstream.foreachRDD
内并行执行的。Spark文档提到,我们应该使用此数据流操作将每个RDD中的数据推送到外部系统

foreachRDD(func):应用 函数func,用于从流生成的每个RDD。此函数 应将每个RDD中的数据推送到外部系统,例如保存 将RDD写入文件,或通过网络将其写入数据库。注 函数func在运行 流应用程序,并且通常会在其中包含RDD操作 将强制计算流式RDD

第节还明确说明了dstream.foreachRDD是一个强大的原语,它允许将数据发送到外部系统。您可以进一步阅读本节,了解如何优化数据流中RDD的操作


希望这有帮助

rdd.saveAsTextFile
是在工作节点上执行的,实际上所有rdd操作都是在
dstream.foreachRDD
内并行执行的。Spark文档提到,我们应该使用此数据流操作将每个RDD中的数据推送到外部系统

foreachRDD(func):应用 函数func,用于从流生成的每个RDD。此函数 应将每个RDD中的数据推送到外部系统,例如保存 将RDD写入文件,或通过网络将其写入数据库。注 函数func在运行 流应用程序,并且通常会在其中包含RDD操作 将强制计算流式RDD

第节还明确说明了dstream.foreachRDD是一个强大的原语,它允许将数据发送到外部系统。您可以进一步阅读本节,了解如何优化数据流中RDD的操作

希望这有帮助