2016-08-02 13 views

Odpowiedz

23

Powiedzmy, że chcesz dołączyć do kolumny "id". Następnie można napisać:

val sqlContext = new org.apache.spark.sql.SQLContext(sc) 
import sqlContext.implicits._  
d1.as("d1").join(d2.as("d2"), $"d1.id" === $"d2.id").select($"d1.*") 
+0

Cześć, to odpowiedź pomaga. Mam głupie pytanie. Co oznacza znak $? Dostaję błąd, gdy próbuję napisać znak $ w moim kodzie. – Avi

+2

Jest to alternatywny sposób dostępu do kolumn DataFrame, jak wyjaśniono [tutaj] (https://spark.apache.org/docs/1.6.0/api/java/org/apache/spark/sql/Column.html), ale musisz zaimportować pakiet implicits (edytowałem swoją odpowiedź) – cheseaux

+0

Cóż, istnieje również opcja łączenia "leftsemi". Zawiera wiersze z lewego stołu, które mają pasujący wiersz po prawej stronie. Nie trzeba też deduplikować, ponieważ pasujące wiersze są uwzględniane tylko raz. – user238607

2

jako alternatywne odpowiedzi, można również wykonać następujące czynności bez dodawania aliasów:

d1.join(d2, d1("id") === d2("id")) 
    .select(d1.columns.map(c => d1(c)): _*) 
Powiązane problemy