私はtransactionCount変数を100にしようとしましたが、私は0を得ました。私は常時1つのパーティションしか持っていないRDDを持っています。私はRDDを処理するこのようなコードを持っています:foreachPartitionの変数への奇妙な影響
var transactionCount = -1
payment_rdd.foreachPartition { partitionOfRecords =>
// this line affect 100 to transactionCount since the I have 100 record
// in my RDD so in my partition
transactionCount = partitionOfRecords.size
partitionOfRecords.foreach { record =>
//I procces each record
}
try {
// this line keep 100 to transactionCount
//another process
}
catch {
case _: Throwable => {
// I never pass here
log.error("Cannot process correctly")
transactionCount = 0
}
}
}
return transactionCount
私は100にもかかわらず-1を得て、なぜ私は理解できません。 あなたはもっと良い解決策がありますか?おかげ
は常にあなたの 'try'ブロック増加例外である場合があります。
私は
Try
とアキュムレータを使用すると思います。 –このような突然変異は一般的には良いとは言えませんが、コメントで言及しているように、特に – cchantep
という分布があります。例外は発生しません。 –