推荐学习书目
› 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 · Feb 24, 2017 · 4171 views
    This topic created in 3549 days ago, the information mentioned may be changed or developed.
    最近在看 spark ,写了一些东西,但对于 spark 这套东西了解的还是太少,求各位 dalao 指导

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

    我的疑问是这样的:

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

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