2017-02-21 2 views
0

Ich versuche, zwei Datenrahmen mit den gleichen Spaltennamen zu verbinden und einige neue Werte zu berechnen. Danach muss ich alle Spalten der zweiten Tabelle fallen lassen. Die Anzahl der Spalten ist riesig. Wie kann ich es einfacher machen? Ich habe versucht, .drop ("table2. *"), Aber das funktioniert nicht.Spark SQL-Datenrahmen alle Spalten aus Alias-Tabelle nach Join

Antwort

1

Sie select mit Aliasnamen verwenden:

df1.alias("df1") 
    .join(df2.alias("df2"), Seq("someJoinColumn")) 
    .select($"df1.*", $"someComputedColumn", ...) 

Referenz mit der Mutter DataFrame:

df1.join(df2, Seq("someJoinColumn")).select(df1("*"), $"someComputedColumn", ...) 
0

Statt Abwurf, können Sie alle notwendigen Spalten auswählen, die Sie wie für weitere Operationen etwas halten wollen unter

val newDataFrame = joinedDataFrame.select($"col1", $"col4", $"col6") 
+0

Es ist kein Fall, wenn ich haben wie 50 Spalten + 50 Spalten in der zweiten Tabelle. Kann ich "table1. *" + Namen der neuen Spalten auswählen – Mike

+0

hoffe, dass dies http://Stackoverflow.com/a/35341524/1025328 hilft –

Verwandte Themen