scala - 连接两个没有公共(public)列的数据框

标签 scala apache-spark

我有两个数据框,它们具有不同类型的列。我需要加入这两个不同的数据框。请引用下面的例子

val df1 has
Customer_name 
Customer_phone
Customer_age

val df2 has
Order_name
Order_ID

这两个数据框没有任何公共(public)列。两个数据框中的行数和列数也不同。我尝试插入一个新的虚拟列来增加 row_index 值,如下所示 val dfr=df1.withColumn("row_index",monotonically_increasing_id())。

但是由于我使用的是 Spark 2,不支持 monotonically_increasing_id 方法。有什么方法可以连接两个数据框,以便我可以在一张 Excel 文件中创建两个数据框的值。

例如

val df1:
Customer_name  Customer_phone  Customer_age
karti           9685684551     24      
raja            8595456552     22

val df2:
Order_name Order_ID
watch       1
cattoy     2

我的最终 Excel 工作表应该是这样的:

Customer_name  Customer_phone  Customer_age   Order_name  Order_ID

karti          9685684551      24             watch        1
   
raja           8595456552      22             cattoy      2

最佳答案

使用以下代码向两个数据框添加索引列

df1.withColumn("id1",monotonicallyIncreasingId)
df2.withColumn("id2",monotonicallyIncreasingId)

然后使用以下代码连接两个数据帧并删除索引列

df1.join(df2,col("id1")===col("id2"),"inner")
   .drop("id1","id2")

关于scala - 连接两个没有公共(public)列的数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49738694/

相关文章:

scala - 如何获得与给定实例相同类型的空集合?

scala - 未加载 HikariCP 驱动程序的 3.0.0 - IllegalAccessException : AbstractHikariConfig can not access a member with modifiers "private"

python - 如何在 PySpark 中使用 Scala UDF?

python - 使用 pyspark 缓存简单 RDD 时出错,而没有缓存代码则工作正常(How to make a class picklable in a Notebook)

javascript - 带有粗箭头的数组上的 forEach 循环

scala - 无形的 HList 附加器

scala - 用 Map#getOrElse 输入奇怪的东西

python-3.x - 如何将包含部分json字符串的文本日志转换为pyspark中的结构化?

PythonSpark : need to execute hive queries from file columns

python - 将 Python 脚本转换为能够在 Spark/Hadoop 中运行