将输入流转换为键值对流
Transform input stream to key-values pairs stream
我是 Spark 和 Scala 的新手,所以我的问题可能很简单,但我仍然很难找到答案。我需要加入两个 Spark 流,但我在将这些流转换为适当格式时遇到了问题。请在下面查看我的代码:
val lines7 = ssc.socketTextStream("localhost", 9997)
val pairs7 = lines7.map(line => (line.split(" ")[0], line))
val lines8 = ssc.socketTextStream("localhost", 9998)
val pairs8 = lines8.map(line => (line.split(" ")[0], line))
val newStream = pairs7.join(pairs8)
这不起作用,因为 "join" 函数需要格式为 DStream[String, String]
的流,而映射函数的结果是 DStream[(String, String)]
.
现在我的问题是如何编写此映射函数的代码以获得适当的输出(稍微解释一下也很好)?
提前致谢。
这按预期工作:
import org.apache.spark.streaming.{Seconds, StreamingContext}
val ssc = new StreamingContext(sc, Seconds(30))
val lines7 = ssc.socketTextStream("localhost", 9997)
val pairs7 = lines7.map(line => (line.split(" ")(0), line))
val lines8 = ssc.socketTextStream("localhost", 9998)
val pairs8 = lines8.map(line => (line.split(" ")(0), line))
val newStream = pairs7.join(pairs8)
newStream.foreachRDD(rdd => println(rdd.collect.map(_.toString).mkString(",")))
ssc.start
我看到的唯一问题是语法错误:line.split(" ")[0]
vs line.split(" ")(0)
但我想编译器会注意到这一点。
我是 Spark 和 Scala 的新手,所以我的问题可能很简单,但我仍然很难找到答案。我需要加入两个 Spark 流,但我在将这些流转换为适当格式时遇到了问题。请在下面查看我的代码:
val lines7 = ssc.socketTextStream("localhost", 9997)
val pairs7 = lines7.map(line => (line.split(" ")[0], line))
val lines8 = ssc.socketTextStream("localhost", 9998)
val pairs8 = lines8.map(line => (line.split(" ")[0], line))
val newStream = pairs7.join(pairs8)
这不起作用,因为 "join" 函数需要格式为 DStream[String, String]
的流,而映射函数的结果是 DStream[(String, String)]
.
现在我的问题是如何编写此映射函数的代码以获得适当的输出(稍微解释一下也很好)?
提前致谢。
这按预期工作:
import org.apache.spark.streaming.{Seconds, StreamingContext}
val ssc = new StreamingContext(sc, Seconds(30))
val lines7 = ssc.socketTextStream("localhost", 9997)
val pairs7 = lines7.map(line => (line.split(" ")(0), line))
val lines8 = ssc.socketTextStream("localhost", 9998)
val pairs8 = lines8.map(line => (line.split(" ")(0), line))
val newStream = pairs7.join(pairs8)
newStream.foreachRDD(rdd => println(rdd.collect.map(_.toString).mkString(",")))
ssc.start
我看到的唯一问题是语法错误:line.split(" ")[0]
vs line.split(" ")(0)
但我想编译器会注意到这一点。