Spark:有条件地将列添加到数据框

cm

我正在尝试获取我的输入数据:

A    B       C
--------------
4    blah    2
2            3
56   foo     3

并根据B是否为空在末尾添加一列:

A    B       C     D
--------------------
4    blah    2     1
2            3     0
56   foo     3     1

通过将输入数据帧注册为临时表,然后键入一个SQL查询,我可以轻松地做到这一点。

但是我真的很想知道如何仅使用Scala方法来执行此操作,而不必在Scala中键入SQL查询。

我已经尝试过.withColumn,但是我无法做到这一点。

meth

尝试withColumn使用以下功能when

val sqlContext = new SQLContext(sc)
import sqlContext.implicits._ // for `toDF` and $""
import org.apache.spark.sql.functions._ // for `when`

val df = sc.parallelize(Seq((4, "blah", 2), (2, "", 3), (56, "foo", 3), (100, null, 5)))
    .toDF("A", "B", "C")

val newDf = df.withColumn("D", when($"B".isNull or $"B" === "", 0).otherwise(1))

newDf.show() 表演

+---+----+---+---+
|  A|   B|  C|  D|
+---+----+---+---+
|  4|blah|  2|  1|
|  2|    |  3|  0|
| 56| foo|  3|  1|
|100|null|  5|  0|
+---+----+---+---+

我添加了(100, null, 5)用于测试isNull案例

我曾尝试使用此代码,Spark 1.6.0但正如的代码所述when,它适用于之后的版本1.4.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R - 如何有条件地将连续列添加到数据框?

有条件地将列添加到数据框列表中

有条件地将列和值添加到Spark Rows

熊猫有条件地将数据框添加到另一个数据框

R:将新列添加到具有条件的现有数据框中

有条件地将12小时添加到列中

有条件地将列添加到 dplyr R 中的 groupby

实体框架-有条件地将列添加到分组依据

将信息添加到有条件地比较字符串的列中

R:在有条件的情况下将数据从行添加到列

有条件地将值添加到新列并替换R中的条件列中的值

有条件地添加到地图

如何基于预定的数据设置有条件地将变量添加到Pyomo约束中

使用循环有条件地将“NA”行添加到数据帧列表中

如何有条件地将“按钮”添加到“工具栏”“表单”“组件”?

有条件地将CircleMarkers添加到传单

使用jq有条件地将元素添加到json数组

如何有条件地将元素添加到 std::array - C++11

有条件地将文件添加到C ++项目中的库

打字稿:有条件地将项目添加到对象

定义列表时有条件地将项目添加到列表?

有条件地将字母添加到字符串

有条件地将标签选项参数添加到select2

有条件地将选项添加到列表

有条件地将JSF组件添加到翻译字符串中

使用Polymer将CSS类有条件地添加到元素

有条件地将target =“ _ blank”添加到Angular JS的链接

有条件地将多个类添加到元素

如何有条件地将小部件添加到列表?