有关使用spark进行数据处理的问题

斯温jack 2017-06-21 04:32:05
首先数据源是sql server
考虑使用JDBC进行读取
Spark内置了DataFrameReader进行数据表或者子查询映射成DataFrame对象
的方法,现在假设这个表很大,如果一次性完成读取及转化内存会挂掉
有没有很好的方法进行数据读取及后续分析。
这里希望回答能够使用Scala API给出,或者实在没有Java也行

个人之前完成这种数据库读取的任务是使用python pandas read_sql
由于其支持返回进行读取的迭代器,可以之后对迭代器进行遍历得到相应
的文件并进行本地化。
这里采用分割的方法也是为了后续的处理可以并行,之后再"reduce"成一个
结果
相应示例代码见
http://blog.csdn.net/sinat_30665603/article/details/72794256

不知道相同的实现在Spark中如何实现。

个人倾向于将数据从数据库调出本地化(serialize)为对象后进行统一
地操作的方法。(最好不用SQL)
其中不妥的地方往指正。

能否给出类似的用Scala Spark的逻辑进行操作的方式,希望能较大程度
地利用多核并行的优势,至少要比上面链接中设计的python脚本要快。

有没有相关的数据处理的好书能够推荐一下吗?最好是英文的。
谢谢
...全文
758 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
freshghost1234 2017-10-31
  • 打赏
  • 举报
回复
不是你是存在mysql还是存在mysql的集群,如果你只有一个mysql,那么就谈不上数据的本地性了,你可以使用rdd,创建多个partition。partition是分布式的,那么你可以在逻辑控制去从不同node读取mysql的,然后再转成df,至于你是根据什么条件进行split,就看你的业务了。如果是集群,那尽量遵循数据本地性原则。
砍柴大叔 2017-10-30
  • 打赏
  • 举报
回复
把数据库中的数据转到hive中可以吗
tchqiq 2017-10-23
  • 打赏
  • 举报
回复
https://docs.databricks.com/spark/latest/data-sources/sql-databases.html#microsoft-sqlserver-example 请参考 如果内存溢出,请加大并行,把读入的数据分摊到多个机器上,溢出的几率就会下降. 关注一下文章中 下推优化 那部分,其实读入数据时是可以提前过滤一部分数据的,这也许对你有帮助
斯温jack 2017-07-03
  • 打赏
  • 举报
回复
虽然自己弄出来了 http://blog.csdn.net/sinat_30665603/article/details/74161591 但是 分回不来了 有没有推荐书目的 有好书给分偶
斯温jack 2017-06-22
  • 打赏
  • 举报
回复
自己顶一下
斯温jack 2017-06-22
  • 打赏
  • 举报
回复
更新一下 导出可以使用jdbc 自己的结果集(resultSet) 来完成,其基本上就是一个迭代器。 但是还是请教一下 推荐的书目及处理方法。
_明月 2017-06-21
  • 打赏
  • 举报
回复
抱歉,由于个人能力有限,帮不了你。

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧