如何在spark应用程序中使用日志记录?
问题是火花代码不会像写入一样执行,而是异步和优化,例如可能的顺序不同。
正如我在此指出stylish spark dataset transformation 以下不应该工作/不一定在spark的优化查询计划中按预期工作:
logger.info("first")
val first = df.someTransformation
logger.info("second")
val second = df.otherTransformation
答案 0 :(得分:2)
您示例中的日志声明并不是很有意义。
我看到3种记录方式:
a)如果你只想记录"进展"如您在示例中所示,您必须在转换后应用操作(例如调用count()
),但这会导致不必要的计算
b)使用spark UI的montior spark,并查看spark.eventLog.enabled
之类的设置以保持输出
c)在UDF / UDAF中,您可以使用累加器来收集执行程序的日志,并使其可供驱动程序访问。