在火花流应用程序中使用火花管



设置场景
我有一个用 scala 编写的 Spark 流应用程序。
在这个应用程序中,我需要将数据传输到 python 脚本。

我现在
怎么做在驱动程序主类中:

ssc
   .couchbaseStream(from = FromBeginning, to = ToInfinity)
   .flatMap(...)
   .flatMap(...)
   .flatMap(...)
   .transform(x => functionName(x))
   .flatMap(...)
   .map(...)
   .saveToCouchbase(bucketName, StoreMode.UPSERT)
ssc.start()
ssc.awaitTermination()

内部函数名称(上面的x是存储在变量rdd中的RDD类型(:

val pipeRDD = rdd.pipe(scriptPath)

问题
我不确定这是否是一个好方法。
我担心的是,为每个 x 执行 python 脚本会产生很大的开销。
但是由于它是一个流媒体应用程序,我看不出我该如何以不同的方式做到这一点。

在 Spark 流应用程序中使用管道的最佳方式是什么?
你会怎么做,为什么?

它会

正常工作...这就像Spark的Hadoop Streaming - 没有什么"错误",如果你受到可用性功能的限制,你没有太多选择。

唯一的缺点是scriptPath文件必须在所有执行程序中可用,或者脚本(及其依赖项(需要通过 --files--archives 标志与 Spark 应用程序 JAR 文件一起交付给群集中的所有执行程序

顺便一提

transform(x => functionName(x))

 transform(functionName)

相关内容

  • 没有找到相关文章

最新更新