我正在编写一个脚本来对数据库执行一些ETL。 我有一个从表填充的现有数据框。 我能够获得数据框中的行数,并再次检查它是否与数据库中的行数匹配
var originalDF = spark.table("XYZ").select(" ").toDF(" ")
println(originalDF.count())
现在,我正在尝试映射原始表的每一行以使用val transformedDF = originalDF.map(dataTransform(_))
执行一些ETL操作
但是,即使现在我有一个print语句试图打印出finalDF中的行数,解释器也会跳过该语句,并且什么都不会打印出来。即使最后一个表示“完成的转换”的打印语句也不会打印出来。我的dataTransform
做的事情很简单(测试起来更简单)
println(finalDF.count())
println("Finished Transform")
有人知道为什么我的map操作之后的语句会被跳过吗?我知道scala的评估很懒,因此我怀疑地图操作可能实际上没有进行。
def dataTransform (tr:Row): Record.BookRecord = {
val field1 = tr.getAs[String]("field1")
val field2 = tr.getAs[String]("field2")
val field3 = tr.getAs[String]("field3")
Record.BookRecord(
field_1 = field1,
field_2 = field2,
field_3 = field3
)
}