Ich habe Schwierigkeiten beim Generieren von eindeutigen sequenziellen Ersatzschlüssel, um die Nullwerte in einer Spalte einer Tabelle zu ersetzen. Die Tabelle wird nach dem Verbinden einer Quelltabelle und einer Referenztabelle erhalten, und die Spalte ist die Primärschlüsselspalte ("account_key") der resultierenden Tabelle, wobei Nullwerte durch eindeutige Sequenzschlüssel ersetzt werden sollten. Die generierten eindeutigen Schlüssel sollten mit einer Nummer beginnen, die der Quelle zugewiesen ist, und die Zahl sollte für jeden Nullwert erhöht werden. habe ich versucht, die folgendeGenerieren eindeutiger sequenzieller Ersatzschlüssel für jeden Datensatz in Spark Scala
var uniqueId = Table_NO.agg(max("No"))
// var uniqueID = 6000001 (for example)
//or a SQL statement can be written as "var uniqueId = sqlContext.sql(SELECT MAX (NBR) FROM Table"
var a = sc.accumulator(uniqueID)
def generate(s:Int):Int = {
if (s==0)
{
a = a.add(1)
return a.localValue
}
else
{
return s
}
val NumGen = udf(generate(_:Int))
val KeyGen = table_n.withColumn("KEY_New", NumGen(table_n ("account_key")))
Vielen Dank für Ihre Antwort Mike – RSG
Ich bin Funken mit 1.6.3 Version – RSG
Ok Ich denke, es könnte für Sie dann funktionieren –