我正在为地图内文件的每一行读取创建一个对象。
在链式地图上,我尝试从该对象访问变量,但是我收到一个空变量。 我正在使用Spark Streamer
//..
val lines = ssc.textFileStream("CSVs/")
lines.map(line => new UserData(line))
.map(userData => userData.myVar)
.print()
我的UserData类
class UserData(csvLine: String) extends Serializable{
{
myVar = csvLine
}
var myVar = ""
}
答案 0 :(得分:0)
您可以使用案例类
case class UserData(csvLine: String)
我不确定为什么你的代码中有userData.myVar
,它应该是这样的:
val lines = ssc.textFileStream("CSVs/")
lines.map(line => UserData(line))
.map(userData => userData.csvLine)
.print()
ssc.start()
ssc.awaitTermination()
此外,textFileStream
仅在添加或更新文件时监控文件夹。如果您只想阅读文件,可以使用spark.read
或sparkContext.textFile
。
答案 1 :(得分:0)
我做错了,因为Scala将myVar声明为空,然后我指定了行(我在该作用域上添加了println并且它被分配了),并再次将其设置为空。我将赋值移动到一个方法,它按预期工作。
acceptCreditCards