2017-10-05 1 views
0

私は参加しようとしている2つのスパークデータセットを持っています。結合キーはデータセットAにネストされているので、まずデータセットBと結合する前にそれをフラット・マップする必要があります。問題は、そのフィールドをフラット・マップすると、列名がデフォルトの "_1"、 "_2"などになります。エイリアスを何とか変更することは可能ですか?それは、各列内の列またはデータ型の数がsame.Thatのままであることを保証するものではありませんflatMapのような変換を適用した後、またはmapとしてあなたが論理的であるとして、列を失うflatMapのような変換を適用した後Spark Dataset:フラットマップの後に列のエイリアスを変更する方法は?

A.flatMap(a => a.keys).join(B).where(...)

+0

あなたは、わからないあなたのコードをコピーすることができます –

答えて

1

なぜ列名を失うのか。

何ができることは、あなたが以前のすべての列をフェッチし、このようなデータセットに適用することができます: -

val columns = A.columns 
A.flatMap(a => a.keys).toDF(columns:_ *).join(B).where(...) 

列の数がflatmap

を適用した後に同じである場合にのみ動作しますあなたはflatmapで別名を必要とする理由

ホープこれはあなたの問題クリア

おかげで

関連する問題