0
私はSpark(現行バージョン2.1.0)をしばらく使っていましたが、いくつかの奇妙な動作に遭遇しました。リテラルカラムの結合で予期しないスパークの振る舞い
df_before = sparkSession.createDataFrame([('a', 4), ('b', 5)], ['A', 'B'])
df_after = sparkSession.createDataFrame([('a', 6), ('b', 7)], ['A', 'B'])
我々は彼らの起源(か何か)を記述する欄でそれらを強化:
のは、次の2つのデータフレームがあるとしましょう。この場合、前または後に言うだけで、カラム:
df_before = df_before.withColumn('C', lit('before'))
df_after = df_after.withColumn('C', lit('after'))
そして、もう一つのデータフレームにそれらを一緒に置く:
df_all = df_before.union(df_after)
私たちに与える:
A | B | C
---|---|------
a | 4 | before
b | 5 | before
a | 6 | after
b | 7 | after
次へ]を、我々はまたに起こります異なるデータフレームを持つ:
data_other = [
('a', 'before', 10),
('b', 'before', 11),
('a', 'after', 12),
('b', 'after', 13)
]
df_other = sparkSession.createDataFrame(data_other, ['A', 'C', 'D'])
私は、2つのstraighforwardly参加する場合:
df_all.join(df_other, ['A', 'C'])
は私が取得:
A | C | B | D
---|--------|---|----
a | before | 4 | 10
b | before | 5 | 11
a | after | 6 | 12
b | after | 7 | 13
誰かがこの動作を説明することができます:私が期待したものと異なっている
A | C | B | D
---|--------|---|----
a | before | 4 | 10
b | before | 5 | 11
a | after | 6 | 10
b | after | 7 | 11
?私は何か間違っているのですか?