apache-spark - 我们可以从另一个数据框向一个数据框添加新列吗
问题描述
我是 Spark 的新手。df1
我使用 pyspark创建了一个数据框,它有 10 列。df1
然后我为,创建了一个临时视图tempviewdf1
。然后我从临时视图中选择了 5 列并制作了另一个数据框df2
。现在我想将第 6 列添加到df2
from df1
。可能吗?
我看到了withColumn()
方法,但我意识到它只有在列名相同的情况下才有效。
解决方案
@victor 说你的 Df1 如下所示,
+---+----+----+----+----+----+----+
|key|col1|col2|col3|col4|col5|col6|
+---+----+----+----+----+----+----+
| 1| 1| 2| 3| 4| 7| 8|
| 2| 4| 3| 4| 5| 8| 9|
| 3| 9| 4| 5| 6| 9| 10|
并创建了一个视图
Df1.createOrReplaceTempView("tempviewdf1")
并从中选择几列并将其设为 Df2
val Df2 = spark.sql("""select key, col1, col2, col3 , col4 from tempviewdf1""")
现在说你想添加你的 Df2 的 col5 部分,只需在 select..
val Df2 = spark.sql("""select key, col1, col2, col3 , col4, col5 from tempviewdf1""")
但是为什么要创建一个视图并从中选择一列并创建一个 Df2 ?
你可以像下面那样做(这是 spark-scala,同样你可以在 pyspark 中看到)
val Df2 = Df1.select("key","col1","col2","col3","col4","col5")
即使你可以做其他方式,比如删除列。
https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#module-pyspark.sql.functions
推荐阅读
- laravel - GroupBy 关于 Eloquent 关系
- javafx - JavaFX PasswordField echo char 在不同的计算机上不同
- c - 如何在C中的同一行中扫描字符串(带空格)和整数
- wordpress - wordpress 注入脚本和图像查找
- mqtt - 为什么 MQTT 被 Keep-Alive 断开连接?
- regex - 使用python中的正则表达式从html标签获取日期
- circleci - Bitbucket-pipelines 到 circleCI 的翻译
- angular6 - Angular 6订阅构造函数上的事件多次调用
- reactjs - Lerna, React-Redux Web Application debug using Visual code editor debugger for Chrome plugin
- r - R在仪表板上显示SQL最后更新