Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在scala spark中处理灵活的模式json时,如何处理缺少的列?_Scala_Apache Spark_Apache Kafka_Spark Streaming - Fatal编程技术网

在scala spark中处理灵活的模式json时,如何处理缺少的列?

在scala spark中处理灵活的模式json时,如何处理缺少的列?,scala,apache-spark,apache-kafka,spark-streaming,Scala,Apache Spark,Apache Kafka,Spark Streaming,使用spark streaming读取kafka消息,其中V=Json事件 Json的模式没有强制执行,因此您可能会获取以下2个事件: {"foo": "01/01/1973","bar": "d,e"} {"foo": "01/01/1974"} 使用read.json和df.registerEmptable(“诱惑”) 如何创建一个query=“select foo,bar from tentable”,在字段不存在的情况下插入空值 *使用spark 1.6,但也很高兴听到spark2的消

使用spark streaming读取kafka消息,其中V=Json事件

Json的模式没有强制执行,因此您可能会获取以下2个事件:

{"foo": "01/01/1973","bar": "d,e"}
{"foo": "01/01/1974"}
使用
read.json
df.registerEmptable(“诱惑”)
如何创建一个
query=“select foo,bar from tentable”
,在字段不存在的情况下插入空值


*使用spark 1.6,但也很高兴听到spark2的消息。为了处理空值,您可以使用。它在Spark 1.6中提供。例如,在您的情况下,您可以使用fill函数,在通过读取json文件创建数据帧后,该函数将空值或不存在的值替换为默认值:

df.na.fill("NULL", Seq("bar")).registerTempTable("tempTable")
第一个参数是默认值,第二个参数是要填充列名的Seq或数组对象


希望有帮助

为了处理空值,可以使用。它在Spark 1.6中提供。例如,在您的情况下,您可以使用fill函数,在通过读取json文件创建数据帧后,该函数将空值或不存在的值替换为默认值:

df.na.fill("NULL", Seq("bar")).registerTempTable("tempTable")
第一个参数是默认值,第二个参数是要填充列名的Seq或数组对象


希望有帮助

如果可以使用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|
+----------+----+

如果可以使用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|
+----------+----+

您可以创建一个CustomSchema,用于在字段不存在时生成空值。您可以创建一个CustomSchema,用于在字段不存在时生成空值。谢谢,我现在正在查看它。只是一个简短的提示,对我来说,它希望我使用一个更符合条件的调用(特别是键入“na”):
df.na.fill(“NULL”,Seq(“bar”)).registerEmptable(“诱惑”)
谢谢,我现在正在查看它。只是一个简短的提示,对我来说,它希望我使用一个更符合条件的调用(特别是键入“na”):
df.na.fill(“NULL”,Seq(“bar”)).registerEmptable(“tentable”)