我想创建一个空的JValue
,以便能够一起解析JSON对象。
现在,我正在创建包含{}
的JValue
,然后将其他对象解析到它,最后使用RDD删除第一行,但我想创建
var JValue: JValue = JValue.empty
从一开始就能跳过拆卸部分。
是否可以创建一个空的JValue
?
import org.json4s._
import org.json4s.jackson.JsonMethods._
var JValue: JValue = parse("{}")
val a = parse(""" {"name":"Scott", "age":33} """)
val b = parse(""" {"name":"Scott", "location":"London"} """)
JValue = JValue.++(a)
JValue = JValue.++(b)
val df = spark.read.json(Seq(compact(render(JValue ))) toDS())
val rdd = df.rdd.first()
val removeFirstRow = df.rdd.filter(row => row != rdd)
val newDataFrame = spark.createDataFrame(removeFirstRow,df.schema)
1条答案
按热度按时间6ljaweal1#
如果我正确理解您要实现的目标,您可以从一个空数组开始,如下所示:
在空数组上调用
++
方法将导致将项添加到该数组,如此处所定义的。最终结果是以下对象:
如果您想尝试一下生成的代码,可以看看this worksheet on Scastie(请记住,我没有在那里引入Spark依赖项,我不能100%确定这在SCastie中是否可以工作)。
正如您在上面链接的代码中所注意到的,您也可以只使用
a ++ b
来获得相同的结果,因此您不必从空数组开始。另外,您可能希望将
JValue
重命名为不同的名称,以避免出现无法区分变量和JValue
类型的奇怪错误。通常在Scala中,类型是大写的,而变量不是。但当然,要努力实现您的代码库的现有实践。