Spark:给DataFrame添加一个有类型的null列

我们知道,scala中Int类型不能为null
而Dataset中表示的Int值的IntegerType类型列却能为null

如果我们想产生一个IntegerType类型列为null的DataFrame该怎么做?
下面的代码可以做到:

import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
val df_json = spark.createDataFrame(List(
  (1.2, 1),
  (3.1, 2)))
  .toDF("col1", "col2")
val udf_null = udf((s: Any) => null)
val df_res = df_json.withColumn("col3", udf_null(col("col1")).cast(IntegerType))
df_res.show
scala> df_res.printSchema
root
 |-- col1: double (nullable = false)
 |-- col2: integer (nullable = false)
 |-- col3: integer (nullable = true)

scala> df_res.show
+----+----+----+
|col1|col2|col3|
+----+----+----+
| 1.2|   1|null|
| 3.1|   2|null|
+----+----+----+

转载于:https://www.cnblogs.com/xuejianbest/p/10285002.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值