2017-01-18 5 views
3

Ich habe einige Datenrahmen mit 170 Spalten. In einer Spalte habe ich einen "name" -String und dieser String kann manchmal spezielle Symbole wie "'" haben, die nicht passend sind, wenn ich sie in Postgres schreibe. Kann ich etwas wie folgt aus:Spark Dataframe ändern Spalte Wert

Df[$'name']=Df[$'name'].map(x => x.replaceAll("'","")) ? 

Ich möchte nicht die volle Datenrahmen analysieren, weil es sehr ist huge.Help mir bitte

Antwort

5

Sie nicht Datenrahmen mutieren können, können Sie sie nur verwandeln sich in neue DataFrames mit aktualisierten Werten. In diesem Fall - können Sie die regex_replace Funktion verwenden, um die Abbildung auf name Spalte auszuführen:

import org.apache.spark.sql.functions._ 
val updatedDf = Df.withColumn("name", regexp_replace(col("name"), ",", "")) 
+0

ich habe ein ähnliches Problem aber es gibt eine bestimmte Liste von Werten das habe ich in einem Array: val ids = Array ("1e4f199c", "6681b1b0"). Ich muss überprüfen, ob die Spalte "id" einen Wert hat, der nur in ids ist, dann wird der Wert ersetzt, ansonsten wird der vorherige Wert beibehalten. Was mache ich dann? –

+0

@SimpleFellow können Sie versuchen, die Funktionen 'when' und' isin' aus 'org.apache.spark.sql.functions' zu verwenden - wenn Sie Hilfe brauchen, um genau zu verstehen, wie, zögern Sie nicht, eine neue Frage zu stellen, ein bisschen zu viel zu antworte in einem Kommentar. –

+0

hier ist es, das komplette Programm: https://stackoverflow.com/questions/48627959/how-to-update-few-records-in-spark –

0

Sie können es tun, wie diese

df.withColumn("name", when($"name" === "'", ""))