sql/dataframes,请帮助我或提供一些好的建议,就如何阅读这个json
{
"billdate":"2016-08-08",
"accountid":"xxx"
"accountdetails":{
"total":"1.1"
"category":[
{
"desc":"one",
"currentinfo":{
"value":"10"
},
"subcategory":[
{
"categoryDesc":"sub",
"value":"10",
"currentinfo":{
"value":"10"
}
}]
}]
}
}
谢谢你,
2条答案
按热度按时间bjp0bcyl1#
您可以尝试以下代码来读取Spark 2.2中基于Schema的JSON文件
2w3rbyxf2#
似乎您的json无效。请检查http://www.jsoneditoronline.org/
请参见an-introduction-to-json-support-in-spark-sql.html
如果你想注册为表,你可以像下面这样注册并打印模式。
下面是示例代码片段
scala示例:
阅读顶级字段
使用select()方法指定顶级字段,使用collect()将其收集到Array[Row]中,使用getString()方法访问每个Row中的列。
拼合并读取JSON数组
每个Person都有一个“cities”数组。2让我们把这些数组展开,读出它们的所有元素。
explode()方法将cities数组展开或展平为一个名为“city”的新列,然后使用select()选择新列,collect()将其收集到Array[Row]中,并使用getString()访问每行中的数据。
读取嵌套JSON对象数组,未展开
读取“schools”数据,这是一个嵌套的JSON对象数组,数组中的每个元素都包含学校名称和年份:
使用
select()
和collect()
选择“schools”数组,并将其收集到Array[Row]
中。现在,每个“schools”数组的类型都是List[Row]
,因此我们使用getSeq[Row]()
方法读取它。最后,我们可以读取每个学校的信息,方法是调用getString()
获取学校名称,调用getLong()
获取学年。