Spark:几种给Dataset增加列的方式、Dataset删除列、Dataset替换null列

几种给Dataset增加列的方式

首先创建一个DF对象:

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

第一种方式:使用lit()增加常量(固定值)

可以是字符串类型,整型

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

注意:

lit()是spark自带的函数,需要import org.apache.spark.sql.functions

Since 1.3.0
def lit(literal: Any): Column Creates a Column of literal value. The passed in object is returned directly if it is already a Column. If the object is a Scala Symbol, it is converted into a Column also. Otherwise, a new Column is created to represent the literal value.

第二种方式:使用当前已有的某列的变换新增

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

第三种方式:使用select函数增加列

java方式:

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

scala

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码
复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

第四种方式:case when当参数嵌套udf

当前内容已被隐藏,您需要登录才能查看

第五种方式:使用expr()函数

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

Dataset删除列

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

Dataset替换null列

首先,在hadoop目录/user/spark/test.csv

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

备注:如果想在根目录下执行spark-shell.需要在/etc/profile中追加spark的安装目录:

当前内容已被隐藏,您需要登录才能查看

使用spark加载.user/spark/test.csv文件

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

一次修改相同类型的多个列的示例。 这里是把key3,key5列中所有的null值替换成1024。 csv导入时默认是string,如果是整型,写法是一样的,有各个类型的重载。

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

一次修改不同类型的多个列的示例。 csv导入时默认是string,如果是整型,写法是一样的,有各个类型的重载。

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

不修改,只是过滤掉含有null值的行。 这里是过滤掉key3,key5列中含有null的行

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

过滤掉指定的若干列中,有效值少于n列的行 这里是过滤掉key1,key2,key3这3列中有效值小于2列的行。最后一行中,这3列有2列都是null,所以被过滤掉了。

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

同上,如果不指定列名列表,则默认列名列表就是所有列

复制代码
当前内容已被隐藏,您需要登录才能查看
复制代码

 

所属分类:问答

 0条回应

我有话说:
    • 春建童鞋
    • 关注
      • 515773发布
      • 93评论
    ×
    订阅图标按钮