使用spark streaming从kafka消息中读取V = Json事件。
Json的架构未被强制执行,因此您可能会获取以下2个事件:
{"foo": "01/01/1973","bar": "d,e"}
{"foo": "01/01/1974"}
使用read.json
和df.registerTempTable("tempTable")
如果字段不存在,如何创建插入NULL的query = "select foo, bar from tempTable"
?
*使用spark 1.6,但也很高兴听到spark2
答案 0 :(得分:1)
为了处理空值,您可以使用na functions。它可以在Spark 1.6中使用。例如,在您的情况下,您可以使用fill函数,它通过读取json文件创建Dataframe后,用默认值替换null或不存在的值:
df.na.fill("NULL", Seq("bar")).registerTempTable("tempTable")
第一个参数是默认值,第二个参数是Seq或Array对象,其中包含要填充的列名称。
希望它有所帮助!
答案 1 :(得分:1)
如果你可以使用spark 2.x,你不需要关心处理空值示例:
spark.read.json("test.json").registerTempTable("tempTable")
spark.sql("select foo, bar from tempTable")
输出:
+----------+----+
| foo| bar|
+----------+----+
|01/01/1973| d,e|
|01/01/1974|null|
+----------+----+