Scala Apache Spark流映射对象和打印属性
我正在读取一个文本文件,将每一行解析为JSON,并试图打印其中一个属性:Scala Apache Spark流映射对象和打印属性,scala,streaming,apache-spark,Scala,Streaming,Apache Spark,我正在读取一个文本文件,将每一行解析为JSON,并试图打印其中一个属性: val msgData = ssc.textFileStream(dataDir) val msgs = msgData.map(MessageParser.parse) msgs.foreach(msg => println(msg.my_attribute)) 但是,我在编译时遇到以下错误: value my_attribute is not a member of org.apache.spark.rdd.
val msgData = ssc.textFileStream(dataDir)
val msgs = msgData.map(MessageParser.parse)
msgs.foreach(msg => println(msg.my_attribute))
但是,我在编译时遇到以下错误:
value my_attribute is not a member of org.apache.spark.rdd.RDD[com.imgzine.analytics.messages.Message]
我错过了什么
感谢Spark Streaming通过创建微批量容器来离散数据流。这些被称为“数据流”,包含RDD的集合 根据您的情况,您需要对RDD的内容进行操作,而不是对数据流进行操作:
msgs.foreach(rdd => rdd.foreach(elem => println(elem.my_attribute))
数据流提供了一种帮助方法来打印每个RDD的第一个元素(我想是10个):
dstream.print()
当然,这将只调用RDD中包含的对象上的.toString并打印结果。可能不是您想要的问题中所述的
my_属性
MessageParser.parse的签名是什么?@om nom nom This:def parse(msg:String):MessageI确认它打印前10个元素(如果RDD中有>=10个元素)。