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

[复制链接]
查看11 | 回复7 | 2021-1-27 05:59:58 | 显示全部楼层 |阅读模式
首先数据源是sqlserver
考虑使用JDBC进行读取
Spark内置了DataFrameReader进行数据表或者子查询映射成DataFrame对象
的方法,现在假设这个表很大,如果一次性完成读取及转化内存会挂掉
有没有很好的方法进行数据读取及后续分析。
这里希望回答能够使用ScalaAPI给出,或者实在没有Java也行
个人之前完成这种数据库读取的任务是使用pythonpandasread_sql
由于其支持返回进行读取的迭代器,可以之后对迭代器进行遍历得到相应
的文件并进行本地化。
这里采用分割的方法也是为了后续的处理可以并行,之后再"reduce"成一个
结果
相应示例代码见
http://blog.csdn.net/sinat_30665603/article/details/72794256
不知道相同的实现在Spark中如何实现。
个人倾向于将数据从数据库调出本地化(serialize)为对象后进行统一
地操作的方法。(最好不用SQL)
其中不妥的地方往指正。
能否给出类似的用ScalaSpark的逻辑进行操作的方式,希望能较大程度
地利用多核并行的优势,至少要比上面链接中设计的python脚本要快。
有没有相关的数据处理的好书能够推荐一下吗?最好是英文的。
谢谢

分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:59:58 | 显示全部楼层

抱歉,由于个人能力有限,帮不了你。




回复

使用道具 举报

千问 | 2021-1-27 05:59:58 | 显示全部楼层
自己顶一下


回复

使用道具 举报

千问 | 2021-1-27 05:59:58 | 显示全部楼层
更新一下导出可以使用jdbc自己的结果集(resultSet)
来完成,其基本上就是一个迭代器。
但是还是请教一下推荐的书目及处理方法。
回复

使用道具 举报

千问 | 2021-1-27 05:59:58 | 显示全部楼层
虽然自己弄出来了
http://blog.csdn.net/sinat_30665603/article/details/74161591
但是分回不来了

有没有推荐书目的
有好书给分偶


回复

使用道具 举报

千问 | 2021-1-27 05:59:58 | 显示全部楼层
https://docs.databricks.com/spark/latest/data-sources/sql-databases.html#microsoft-sqlserver-example
请参考
如果内存溢出,请加大并行,把读入的数据分摊到多个机器上,溢出的几率就会下降.
关注一下文章中下推优化那部分,其实读入数据时是可以提前过滤一部分数据的,这也许对你有帮助
回复

使用道具 举报

千问 | 2021-1-27 05:59:58 | 显示全部楼层
把数据库中的数据转到hive中可以吗
回复

使用道具 举报

千问 | 2021-1-27 05:59:58 | 显示全部楼层
不是你是存在mysql还是存在mysql的集群,如果你只有一个mysql,那么就谈不上数据的本地性了,你可以使用rdd,创建多个partition。partition是分布式的,那么你可以在逻辑控制去从不同node读取mysql的,然后再转成df,至于你是根据什么条件进行split,就看你的业务了。如果是集群,那尽量遵循数据本地性原则。
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行