私はSpark SQL(D1とD2)に2つのデータフレームを持っています。Spark SQLで2つのデータフレームを結合し、1つのカラムだけを選択
私は、内側にしようとしていますが、それらの両方D1.join(D2, "some column")
に参加し、のみD1のデータを取り戻す、ない完全なデータがを設定します。
D1とD2の両方に同じ列があります。
私はこれを手伝ってもらえますか?
私はSpark 1.6を使用しています。
私はSpark SQL(D1とD2)に2つのデータフレームを持っています。Spark SQLで2つのデータフレームを結合し、1つのカラムだけを選択
私は、内側にしようとしていますが、それらの両方D1.join(D2, "some column")
に参加し、のみD1のデータを取り戻す、ない完全なデータがを設定します。
D1とD2の両方に同じ列があります。
私はこれを手伝ってもらえますか?
私はSpark 1.6を使用しています。
「id」列に参加したいとします。そして、あなたが書くことができる:別の答えとして
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.*")
を、あなたもエイリアスを追加することなく、次の操作を行うことができます:
d1.join(d2, d1("id") === d2("id"))
.select(d1.columns.map(c => d1(c)): _*)
こんにちは、この答えは役立ちます。私は愚かな質問があります。 $記号は何を意味しますか?自分のコードに$記号を書き込もうとするとエラーになります。 – Avi
これは[ここ](https://spark.apache.org/docs/1.6.0/api/java/org/apache/spark/sql/Column.html)で説明されているように、DataFrameカラムにアクセスする別の方法ですが、 implicitsパッケージをインポートする必要があります(私の回答を編集しました) – cheseaux
まあ、 "leftsemi" joinオプションもあります。それは、右側の行が一致する左のテーブルからの行を含みます。一致する行が1回だけ含まれるため、除外する必要もありません。 – user238607