不懂就要问, pyspark

2017-02-24 16:17:23 +08:00
 guolingbing
最近在看 spark ,写了一些东西,但对于 spark 这套东西了解的还是太少,求各位 dalao 指导

现在的情况是这样的:
我有 40G 左右的文本文件需要处理并分析:
我现在用的鲁莽的方法:
sc.wholeTextFiles--读完
map--让这些处理的中间结果存到 mongodb 中
reduce--再从 mongodb 中读东西进行分析
因为中间结果是很多数组有些复杂,所以我才想用 mongodb 存

我的疑问是这样的:

听说从本地直接读文件效率很低,要把这些文件先 put 到 hdfs 上吗?

spark 似乎提供了类似 mongodb 的可用的数据库?用它这个更好?
2804 次点击
所在节点    Python
17 条回复
wellsc
2017-02-24 16:22:19 +08:00
pandas 就够了
xiaoye
2017-02-24 16:27:26 +08:00
中间不要把文件落地,直接 reduce.
qfdk
2017-02-24 16:28:34 +08:00
我是 scala 党 思路是这样的 你把你的大文件分割成 10 分 开十个机器 这样去读速度会快很多
guolingbing
2017-02-24 16:29:07 +08:00
@wellsc 本来我觉得也是啊,奈何这关系到一个课程作业...
guolingbing
2017-02-24 16:33:11 +08:00
@xiaoye 中间结果必须要存的,因为将来要反复 reduce 这些东西,类似搜索,我的担心是存 mongodb 里是不是对 spark 的性能有很大影响
guolingbing
2017-02-24 16:37:35 +08:00
@qfdk 好的,我再看看 spark 的 dataframe~看能不能把中间结果用它的 df 存
wh0syourda66y
2017-02-24 16:39:35 +08:00
少年,这些我都用过,没有什么复杂的数据结构是 spark dataframe 或者 spark-sql 处理不了的
xiaoye
2017-02-24 16:40:32 +08:00
开始的是时候,把文件上传到 HDFS 。比较简单的办法是把「中间结果」 encode 一下,存到 HDFS 。
二次读取完了直接 decode 一下,然后处理就好了。
qfdk
2017-02-24 16:40:42 +08:00
@guolingbing 反正中间就是 df 然后随便转换就行读文件耗时 中间网络传输也是瓶颈
miaoever
2017-02-24 16:41:03 +08:00
中间为什么要手动存呢,如果你想保存中间结果,不是用 spark 的 cache 比较好么?
guolingbing
2017-02-24 16:57:09 +08:00
@wh0syourda66y 我也很想用啊,也很苦恼
guolingbing
2017-02-24 16:57:21 +08:00
@xiaoye 嗯,我也是这样想的
guolingbing
2017-02-24 16:58:44 +08:00
@miaoever spark 新手,我也很苦恼的,存 mongodb 的方便在于其他地方要调用这些比较方便,
guolingbing
2017-02-24 16:59:34 +08:00
@qfdk 感觉 pyspark 的文档有些复杂,虽然感觉也能草草用用,但总感觉不靠谱
likuku
2017-02-24 17:01:12 +08:00
反复存取, mongodb 小心耗尽硬盘
qfdk
2017-02-24 17:06:39 +08:00
@guolingbing 是的 所以用的 Scala 版本 另外可以考虑用 zeppelin 进行数据分析
mind3x
2017-02-25 00:03:50 +08:00
业界人士建议,如果一定要存中间结果,存成 parquet 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/342940

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX