一、Java方式:
运行结果如下:
解决办法:Person_类需要Public修饰符,将Person_放到单独的文件
运行结果如下:
错误原因:返回的ROW中的字段并没有按照Person_字段的顺序排列
Row中的字段顺序:
可以看到这里scheme的顺序并不是我们定义的字段顺序
解决办法:
可以看到这里Row 提供了根据Row中的字段名称来获取字段的值
修改代码:
运行结果:
提示我们Person_ 没有序列化
解决办法:
让Person_ 实现Serializable 接口
再次运行:
这次运行成功了
总结:
JavaRDD和DataFrame互相转换注意事项:
1)反射的类必须是Pulicclass
2)定义的类必须实现Serializable 接口
3)DataFrame 转换成RDD时注意根据fieldName 获取对应的值
二、scala方式
注意:这里lines.map 返回的RDD并没有.toDF 方法,这里用到了隐式转换
隐式转换最终将RDD转换成了DataFrameHolder 然后调用toDF 最终将RDD转换成了DataFrame了
注:本学习笔记来自DT大数据梦工厂 微信公众号:DT_Spark 每晚8点YY永久直播频道:68917580