scala - 带有空值的 Seq[(Int,Int)] 隐式转换为 DataFrame
问题描述
我有一个将 a 转换Seq[(Int,Int)]
为 DataFrame 的简单测试用例:
test("SparkTest 0280") {
val conf = new SparkConf().set("spark.sql.codegen.wholeStage", "false").set("spark.sql.cbo.enabled", "true")
val spark = SparkSession.builder().config(conf).master("local").appName("SparkTest").enableHiveSupport().getOrCreate()
import spark.implicits._
Seq[(Int,Int)]((null, 1), (2, null), (null, 3)).toDF("a", "b").createOrReplaceTempView("t")
spark.sql("select a,b,nvl(a,b) from t").show(truncate = false)
}
有一个编译问题:
Error:(565, 21) an expression of type Null is ineligible for implicit conversion
Seq[(Int,Int)]((null, 1), (2, null), (null, 3)).toDF("a", "b").createOrReplaceTempView("t")
这里有什么问题?
解决方案
如果你想使用nulls
你应该替换Ints
为java.lang.Integers
:
Seq[(Integer, Integer)]((null, 1), (2, null), (null, 3)).toDF("a", "b")
// org.apache.spark.sql.DataFrame = [a: int, b: int]
可以为空。
推荐阅读
- mongodb - 2个集合之间的mongoDB连接
- c# - 得到'关键字不支持:'初始目录'。连接字符串.net 中的错误
- kotlin-js - 使用 Kotlin JS 的 Javascript 结构表示
- reactjs - 在侧边栏菜单中选择时内容未更新
- flutter - 如何在颤动中使用卡片内的列和行
- javascript - 如何使用正则表达式匹配文本并将其返回到问号?
- c++ - 我无法创建虚幻引擎 4 c++ 项目
- javascript - 为什么要在 Firebase 中创建会话后退出?
- java - Spring Boot - Spring Boot Starter Actuator 的问题
- reactjs - React JS,无法使用调度挂钩更新 Redux 状态