需要在写入后知道数据帧的计数而无需调用其他操作
我知道使用Spark监听器,我们可以像下面这样计算。但是下面的代码被要求完成所有任务。说我有dataframe1和dataframe 2
调用每个任务onTaskEnd
的两个数据帧写入。所以我需要一个标志来分隔对dataframe1和datafarme2的调用以增加计数器。
var dataFrame_1_counter = 0L
var dataFrame_2_counter = 0L
sparkSession.sparkContext.addSparkListener(new SparkListener(){
override def onTaskEnd(taskEnd: SparkListenerTaskEnd) {
synchronized {
if(`isDataFrame1Call`){ // any way for isDataFrame1Call?
dataFrame_1_counter += taskEnd.taskMetrics.outputMetrics.recordsWritten
}else{
dataFrame_2_counter += taskEnd.taskMetrics.outputMetrics.recordsWritten
}
}
}
需要isDataFrame1Call
标志。有什么办法吗?
答案 0 :(得分:0)
这通过为spark中的每个线程使用作业组设置来解决