既存のデータフレームのスキーマを別のデータフレームのスキーマに変更しようとしています。スキーマをあるデータフレームから別のデータフレームにコピー
DATAFRAME 1:
Column A | Column B | Column C | Column D
"a" | 1 | 2.0 | 300
"b" | 2 | 3.0 | 400
"c" | 3 | 4.0 | 500
は、データフレーム2:
Column K | Column B | Column F
"c" | 4 | 5.0
"b" | 5 | 6.0
"f" | 6 | 7.0
だから私は、第二の最初のデータフレームのスキーマを適用したいです。したがって、同じ列はすべて残っています。 1にないデータフレーム2の列は削除されます。他は "NULL"になります。スキーマがString、INTとダブルが含まれているため、これは動作しません見ることができるよう
今val schema = df1.schema
val newRows: RDD[Row] = df2.map(row => {
val values = row.schema.fields.map(s => {
if(schema.fields.contains(s)){
row.getAs(s.name).toString
}else{
"NULL"
}
})
Row.fromSeq(values)
})
sqlContext.createDataFrame(newRows, schema)}
:
Column A | Column B | Column C | Column D
"NULL" | 4 | "NULL" | "NULL"
"NULL" | 5 | "NULL" | "NULL"
"NULL" | 6 | "NULL" | "NULL"
出力は、だから私は、可能な解決策となりました。そして、私の行はすべてString値を持っています。
これは私が立ち往生しているところです。自動的に値のタイプをスキーマに変換する方法はありますか?
感謝
あなたは、単に左が、このようなクエリを使用してデータフレームに参加しない可能性があり
返信いただきありがとうございます!私はそれを試してみました、そして、それは私が必要としていたものでした! (まだupvoteできません) – RudyVerboven