2017-10-09 6 views
0

Erklären mein Problem mit einem Beispiel ..Funke: Zusammenführen von zwei Datenrahmen

table_name 

col1 col2 col3 
1  aaa xxx 
1  bba yyy 
2  ccc yyy 

ich meine letzte Ausgabe wie sein wollen:

table_name 

col1 col2 col3 
1  aab xxx 
1  bbc yyy 
2  cc yyy 

ich eine Tabelle mit drei Spalten (hat keine primäre Schlüssel) und ich musste die Daten in der 2. Spalte unter diesen 3 Spalten ändern und jetzt möchte ich die alte Spalte durch diese neue 2. Spalte ersetzen.

df1 = hc.sql("select col1 from table_name") 
df2 = hc.sql("select col2 from table_name") 
df3 = hc.sql("select col3 from table_name") 

Was sind die Möglichkeiten, dies zu tun?

Da es kein Primärschlüssel i diesen Filz ist ein Weg:

I row_numbers für den Datenrahmen (Zeilennummer wird eine neue Spalte tot er Datenrahmen) hinzufügen und kann alle Datenrahmen auf dem row_number beizutreten. - hier ist das Problem, wenn ich "col1 aus table_name auswählen" und "col2 aus table_name auswählen" gibt es keine Garantie, dass in der ersten und zweiten Abfragen ich die Zeilen in der gleichen Reihenfolge bekommen werde .. (Bitte korrigieren Sie mich, wenn ich bin falsch)

mache es einfach, ich folgend in pyspark nur tun will:

table1 

col_1 
a 
b 
c 

table2 

col_2 
d 
e 
f 

into--- 

table_1_2 

col1 col2 
a d 
b e 
c f 

Antwort

0

Sie Spalte zu einem vorhandenen Datenrahmen mit withColumn hinzufügen kann. Sie definieren das udf, das Ihre column2 in die neue Spalte transformiert. Können Sie die Transformation beschreiben, die Sie durchführen möchten? Also in Ihrem Fall:

table 1 = table1.withColumn("newCol2", udf(col2)) 
Verwandte Themen