2017-03-14 4 views
0

データフレームAとBが異なるスキーマを持っているため、AからBへ行を挿入したい。異なるスキーマを持つ別のデータフレームにデータフレームを挿入するにはどうすればよいですか?

環境はSpark 1.6なので、2つのデータフレームに同じ列がある場合はunionAll関数を使用できます。

のスキーマ:

B用
root 
    |--a 
    |--b 

スキーマ:

root 
    |--a 
    |--b 
    |--c 
    |--d 
    | |--d_1 
    | |--d_2 
    | |--d_3 

私はdatafrane Bに列 "A" と "B" を挿入し、他の列を空白のままにする必要があります。とB列ペアを想定し

答えて

0

は、あなたがデータフレームを外部結合することができますユニークです。

B.join(A, usingColumns = Seq("a", "b"), "outer") 

そうでない場合は、一意の列を追加することができ、その後、私は "B.join(A、B(" A」)のようなもの=== Aを(試してみました

import org.apache.spark.sql.functions._ 

B.withColumn("id", lit(2)).join(A.withColumn("id", lit(1)), usingColumns = Seq("id"), "outer") 
+0

を外部結合しますprintSchema、a、b、c、d(d_1、d_2、d_3)、a、bの6つの列があることを示す結果。 "a"と "b"列は重複しています –

+0

@PingjiangLi Sparkには複数の結合APIがあります。使用しているものは、参加する列を両方のDataFrameから保持します。私が提案したものは重複する列を作成しません。だから、このようになります、 'B.join(A、usingColumns =配列(「A」)、「外側」)' しかし、あなたは、両方のデータフレームの列bを持っていて、Bを考慮していないとして、あなたが終わりのスキーマに加わるとき、これはa、b、c、d(d_1、d_2、d_3)、b –

関連する問題