我的要求是将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数组?
感谢您的帮助!!!
答案 0 :(得分:2)
可以看到DataFrame相当于数据库中具有行和列的普通旧表。你不能从中获得一个简单的数组,你最接近数组的将是以下结构:
EditText myEditText = (EditText) findViewById(R.id.myEditText);
要实现类似的结构,您可以使用DataFrame API的[
"col1": [val1, val2, ..],
"col2": [val3, val4, ..],
"col3": [val5, val6, ..]
]
方法获取toJSON
,然后对其RDD<String>
进行操作(注意任何collect
}例外)。
您现在拥有OutOfMemory
,根据您使用的JSON库,您只需在Array[String]
中进行转换即可。
请注意,这似乎是使用Spark的一种非常奇怪的方式,您通常不会将RDD或DataFrame直接输出并转换为其中一个对象,您通常会将其溢出到存储解决方案中。