【发布时间】:2019-10-13 08:32:07
【问题描述】:
您好,我正在使用 Flink 从 S3 读取 JSON 数据,然后将输入解析为案例类。问题是当 JSON 字符串有一些空值时,案例类不接受它,因为案例类的每个字段都有一个类型(Int、String 等)。
搜索解决方案我发现我可以使用 Option 将空值启用到案例类中并且它可以工作,但是当我尝试在从数据集转换为表后进行查询时出现问题。
如果我尝试获取分数为空的行,我没有任何原因,因为 Option Type 代表一个对象。
//Case class that I used to parse a JSON
case class TestTableSchema(
id: String,
score: Option[Double]
)
val data: Dataset[TestTableSchema] = ...
tableEnv.registerDataSet("test_table", data)
val result = tableEnv.sqlQuery("""
|SELECT *
|FROM test_table
|WHERE score IS NULL
""".stripMargin
)
我还检查了我可以使用 Row 数据类型而不是接受空值的案例类,但我没有找到一些示例来实现它。
当我想要一个方案时如何处理空值?
【问题讨论】:
标签: scala apache-flink