spark练习总结
嵌套json处理
json形如{“ope”:12,”user”:[{“apple”:13,”pear”:{“color”:”yellow”}},{“apple”:15,”pear”:{“color”:”red”}}]}
这种一层嵌套一层。
在网上搜到两种处理方法。
1.得到map/list结构
List(Map(name->”sdf”,dict->List(…))
1 | //repp为json字符串 |
2.利用sparksql
遇到array用explode散开,遇到dict当做父子关系。比如pear.color,再比如explode(user)
{“ope”:12,”user”:[{“apple”:13,”pear”:{“color”:”yellow”}},{“apple”:15,”pear”:{“color”:”red”}}]}
1 | val conf = new SparkConf().setMaster("local").setAppName("JSONApp"); |
dataframe常用操作
遍历
1 | val ids = dft.select(dft("id")).collect() //先求collect |
但是求collect需要慎重,因为很可能dataframe数值很多很大,引起问题。
json构造dataframe(一个有趣的知识点)
https://blog.csdn.net/liangrui1988/article/details/97665409
需要构造好scheme
1 | //压平list还要构造结构(因为未来还要还原结构) |
UDF
可以使用自定义方法,在SQL语句和列。
写的比较好的博客:
https://www.cnblogs.com/cc11001100/p/9463909.html
https://www.jianshu.com/p/b1e9d5cc6193
特殊方法
scala判断类型方法 getClass()
scala强制转换方法.asInstanceOf[List[Object]] (注意是中括号)