Scala 我需要在spark流媒体中将org.apache.spark.rdd.rdd[Array[Byte]]转换为Array[Byte]
我试图通过kafka将json文件解析为spark流 我编写了一个需要Scala 我需要在spark流媒体中将org.apache.spark.rdd.rdd[Array[Byte]]转换为Array[Byte],scala,apache-spark,spark-streaming,scala-collections,Scala,Apache Spark,Spark Streaming,Scala Collections,我试图通过kafka将json文件解析为spark流 我编写了一个需要数组[Byte]的函数 stream.foreachRDD(rdd=> parseAVROToString(rdd) ) ssc.start 要使用parseAVROToString我需要Array[Byte]。 我收到以下错误消息: found : org.apache.spark.rdd.RDD[Array[Byte]] required: Array[Byte] parseAVROToString(
数组[Byte]
的函数
stream.foreachRDD(rdd=>
parseAVROToString(rdd)
)
ssc.start
要使用parseAVROToString
我需要Array[Byte]
。
我收到以下错误消息:
found : org.apache.spark.rdd.RDD[Array[Byte]] required: Array[Byte] parseAVROToString(rdd)
您可以尝试以下方法:
stream.foreachRDD(rdd => {
rdd.foreach(record = > parseAVROToString(record))
})
但是,foreachRDD
是一种输出操作,用于将下划线rdd保存到外部文件或数据库。我认为stream.transform
对您的情况可能有用 您可以尝试以下方法:
stream.foreachRDD(rdd => {
rdd.foreach(record = > parseAVROToString(record))
})
但是,
foreachRDD
是一种输出操作,用于将下划线rdd保存到外部文件或数据库。我认为stream.transform
对您的情况可能有用 我可以传递这个函数,但是我无法打印通过parseAVROToString函数得到的字符串,因为它进入流中,有什么办法吗?试试这个stream.foreachRDD(rdd=>{rdd.foreach(record=>{println(parseAVROToString(record))})
请注意,这将在从属节点控制台中打印记录。我想您可能会看到驱动程序控制台!检查工作节点日志。或者,如果您正在调试,请尝试以下代码.transform(rdd=>{val parsedRDD=rdd.map(record=>{parseAVROToString(record)})parsedRDD}).print()
这将在驱动程序控制台上打印10条示例记录。它不起作用,没有办法检查我的解析函数是否真的在工作……非常感谢你的帮助!!你得到了什么?有错误吗?人们经常使用transform和print进行调试!好的,让我们这样说,你在parseAVROToString中返回了什么?你要退线吗?然后应该打印在控制台上!我可以传递这个函数,但是我无法打印通过parseAVROToString函数得到的字符串,因为它进入流中,有什么办法吗?试试这个stream.foreachRDD(rdd=>{rdd.foreach(record=>{println(parseAVROToString(record))})
请注意,这将在从属节点控制台中打印记录。我想您可能会看到驱动程序控制台!检查工作节点日志。或者,如果您正在调试,请尝试以下代码.transform(rdd=>{val parsedRDD=rdd.map(record=>{parseAVROToString(record)})parsedRDD}).print()
这将在驱动程序控制台上打印10条示例记录。它不起作用,没有办法检查我的解析函数是否真的在工作……非常感谢你的帮助!!你得到了什么?有错误吗?人们经常使用transform和print进行调试!好的,让我们这样说,你在parseAVROToString中返回了什么?你要退线吗?然后应该打印在控制台上!