Scala Apache Spark流映射对象和打印属性

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.

我正在读取一个文本文件,将每一行解析为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.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个元素)。