V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
guolingbing
V2EX  ›  Python

不懂就要问, pyspark

  •  
  •   guolingbing · 2017-02-24 16:17:23 +08:00 · 2996 次点击
    这是一个创建于 2861 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近在看 spark ,写了一些东西,但对于 spark 这套东西了解的还是太少,求各位 dalao 指导

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

    我的疑问是这样的:

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

    spark 似乎提供了类似 mongodb 的可用的数据库?用它这个更好?
    17 条回复    2017-02-25 00:03:50 +08:00
    wellsc
        1
    wellsc  
       2017-02-24 16:22:19 +08:00   ❤️ 1
    pandas 就够了
    xiaoye
        2
    xiaoye  
       2017-02-24 16:27:26 +08:00   ❤️ 1
    中间不要把文件落地,直接 reduce.
    qfdk
        3
    qfdk  
       2017-02-24 16:28:34 +08:00 via iPhone   ❤️ 1
    我是 scala 党 思路是这样的 你把你的大文件分割成 10 分 开十个机器 这样去读速度会快很多
    guolingbing
        4
    guolingbing  
    OP
       2017-02-24 16:29:07 +08:00
    @wellsc 本来我觉得也是啊,奈何这关系到一个课程作业...
    guolingbing
        5
    guolingbing  
    OP
       2017-02-24 16:33:11 +08:00
    @xiaoye 中间结果必须要存的,因为将来要反复 reduce 这些东西,类似搜索,我的担心是存 mongodb 里是不是对 spark 的性能有很大影响
    guolingbing
        6
    guolingbing  
    OP
       2017-02-24 16:37:35 +08:00
    @qfdk 好的,我再看看 spark 的 dataframe~看能不能把中间结果用它的 df 存
    wh0syourda66y
        7
    wh0syourda66y  
       2017-02-24 16:39:35 +08:00   ❤️ 1
    少年,这些我都用过,没有什么复杂的数据结构是 spark dataframe 或者 spark-sql 处理不了的
    xiaoye
        8
    xiaoye  
       2017-02-24 16:40:32 +08:00   ❤️ 1
    开始的是时候,把文件上传到 HDFS 。比较简单的办法是把「中间结果」 encode 一下,存到 HDFS 。
    二次读取完了直接 decode 一下,然后处理就好了。
    qfdk
        9
    qfdk  
       2017-02-24 16:40:42 +08:00 via iPhone   ❤️ 1
    @guolingbing 反正中间就是 df 然后随便转换就行读文件耗时 中间网络传输也是瓶颈
    miaoever
        10
    miaoever  
       2017-02-24 16:41:03 +08:00   ❤️ 1
    中间为什么要手动存呢,如果你想保存中间结果,不是用 spark 的 cache 比较好么?
    guolingbing
        11
    guolingbing  
    OP
       2017-02-24 16:57:09 +08:00
    @wh0syourda66y 我也很想用啊,也很苦恼
    guolingbing
        12
    guolingbing  
    OP
       2017-02-24 16:57:21 +08:00
    @xiaoye 嗯,我也是这样想的
    guolingbing
        13
    guolingbing  
    OP
       2017-02-24 16:58:44 +08:00
    @miaoever spark 新手,我也很苦恼的,存 mongodb 的方便在于其他地方要调用这些比较方便,
    guolingbing
        14
    guolingbing  
    OP
       2017-02-24 16:59:34 +08:00
    @qfdk 感觉 pyspark 的文档有些复杂,虽然感觉也能草草用用,但总感觉不靠谱
    likuku
        15
    likuku  
       2017-02-24 17:01:12 +08:00   ❤️ 1
    反复存取, mongodb 小心耗尽硬盘
    qfdk
        16
    qfdk  
       2017-02-24 17:06:39 +08:00 via iPhone
    @guolingbing 是的 所以用的 Scala 版本 另外可以考虑用 zeppelin 进行数据分析
    mind3x
        17
    mind3x  
       2017-02-25 00:03:50 +08:00   ❤️ 1
    业界人士建议,如果一定要存中间结果,存成 parquet 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3557 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 04:32 · PVG 12:32 · LAX 20:32 · JFK 23:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.