我正在尝试寻找一种有效且干净的方法来在其他两个DataFrame之间创建一个模式化的DataFrame。
DataFrame One(fNameDF):
+---------+
| fName |
+---------+
| Paul |
| Bob |
| George |
+---------+
DataFrame 2(lNameDF):
+---------+
| lName |
+---------+
| Rimerman|
| King |
| Reed |
+---------+
结果:数据框三(combinedDF):
val combinedSchema: StructType = new StructType()
.add(StructField("fullName", StringType, nullable = true))
.add(StructField("phoneNumber", StringType, nullable = true))
+-----------------+--------------+
| fullName | phoneNumber |
+-----------------+--------------+
| Paul Rimerman | null |
| Paul King | null |
| Paul Reed | null |
| Bob Rimerman | null |
| Bob King | null |
| Bob Reed | null |
| George Rimerman | null |
| George King | null |
| George Reed | null |
+-----------------+--------------+
我曾经尝试过-运气不好-使用嵌套映射操作来完成上述操作,但是感觉好像有更简单的方法可以做到吗?
val combinedDF = fNameDF.map(fNameRow => { lNameDF.map(lNameRow =>
{ val fullName = concat(fNameDF.getString(0),lit(" "), lNameDF.getString(0))})}).schema(combinedSchema)
答案 0 :(得分:0)
您可以使用以下onEdit
:
full join
为进一步了解,您可以从scala> var df = Seq(("Rimerman"),("King"),("ReedReed"),("Mahesh")).toDF("lname").withColumn("id",lit(1))
scala> df.show()
+--------+---+
| lname| id|
+--------+---+
|Rimerman| 1|
| King| 1|
|ReedReed| 1|
| Mahesh| 1|
+--------+---+
语句中删除drop
子句
join
希望它对您有帮助。