我的要求是将dataframe作为输入参数传递到scala类,该类将json格式的数据保存到hdfs。
输入参数如下所示:
case class ReportA(
parm1: String,
parm2: String,
parm3: Double,
parm4: Double,
parm5: DataFrame
)
我已经为此参数创建了一个JSON对象,例如:
def write(xx: ReportA) = JsObject(
"field1" -> JsString(xx.parm1),
"field2" -> JsString(xx.parm2),
"field3" -> JsNumber(xx.parm3),
"field4" -> JsNumber(xx.parm4),
"field5" -> JsArray(xx.parm5)
)
parm5是一个数据框,想要转换为Json数组。
如何将数据框转换为Json数组?
感谢您的帮助!!!
可以将DataFrame视为等效于数据库中具有行和列的普通表。您不能仅仅从中获得一个简单的数组,您将最接近数组的结构如下:
[
"col1": [val1, val2, ..],
"col2": [val3, val4, ..],
"col3": [val5, val6, ..]
]
要实现类似的结构,可以使用toJSON
DataFrame API的方法来获取RDD<String>
,然后对其进行collect
处理(请注意所有OutOfMemory
异常)。
现在Array[String]
,您有了一个,您可以JsonArray
根据所使用的JSON库简单地对其进行转换。
请注意,这似乎是使用Spark的一种非常奇怪的方法,通常不输出RDD或DataFrame并将其直接转换为您的对象之一,而是通常将其溢出到存储解决方案上。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句