我在spark中有一个dataframe,有一列包含json类型的数据
column3:
z:{
k:{
q1:null,
q2:1,
q3:23,
q4:null,
q5:{v1:null, v2:wers, v3:null}
a1:['sdsad','wqeqw'],
d1:'123_23'
},
l:{
w1:wwew
w2:null
w4:123
}
}
如何处理上述json中的内容并执行一些操作,如:分解列d1:“\u23”上的“123\u 23”并将其作为数据帧中的另一列添加
如何读取json中有多少键没有空值。如果有任何数组,那么如何计算该数组的元素
所以我的数据框是:
下面是示例数据帧:
col1 : gf23431
col2 : 6728103
col3 : "z:{
k:{
q1:null,
q2:1,
q3:23,
q4:null,
q5:{v1:null, v2:wers, v3:null}
a1:['sdsad','wqeqw'],
d1:'123_23'
},
l:{
w1:wwew
w2:null
w4:123
}
}"
col4 : 3658
所需的输出列:
“k:”7下的总键数
键“k:”5下的非空值总数//具有非空值的键计数
按键“q5:”3下的按键总数
键“q5:”1下的总非空值
“a1:”2下的总值
拆分“d1:”下的值并添加另一列246//将第一个值乘以2并作为数据帧中的另一列添加
所以输出列将是:
col5 : 7
col6 : 5
col7 : 3
col8 : 1
col9 : 2
col10: 246
使用
get_json_object
函数之类的函数来提取所需的字段。你可以将它们与null等进行比较。。好像这些字段只是常规的数据帧列。还可以查看其他函数,如数组长度、贴图等https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.functions.get_json_object
相关问题 更多 >
编程相关推荐