分享

spark读取parquet文件问题

macWang 2017-6-15 10:34:45 发表于 异常错误 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 3 8306
请大神指教:parquet文件读出来之后,要经过处理排序。很奇怪的是,dataframe = context.sql(xxx),这个dataframe.foreach(println)可以看到结果,但是做其他处理比如:dataframe.foreach{line => Splitter.on("\t").split(line) }的时候就报错:task not serializable。如果dataframe.collect(),又会因为文件太大而报buffer overflow。
我的parquet大概700M左右
这俩问题网上找找也没搞懂,求大神指点下



已有(3)人评论

跳转到指定楼层
desehawk 发表于 2017-6-15 14:01:52
很多人都遇到过这个问题。
这是因为变量定义的问题。变量的定义和使用最好在一个地方,就不会出现序列化问题了。
可参考
不能序列化解决方法 org.apache.spark.sparkException:Task not serializable
回复

使用道具 举报

macWang 发表于 2017-6-15 15:30:52
desehawk 发表于 2017-6-15 14:01
很多人都遇到过这个问题。
这是因为变量定义的问题。变量的定义和使用最好在一个地方,就不会出现序列化问 ...

谢谢。
回复

使用道具 举报

ledasion 发表于 2017-7-14 11:17:49
本帖最后由 ledasion 于 2017-7-14 11:19 编辑

主要是 Split 类是不支持序列化的,可以试一试这样写,但是这个操作不会返回任何结果
dataframe.foreach{line =>line.split("\t") }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条