Tag Archives: Spark

Spark对数据倾斜的八种处理方法

本文主要讲Spark针对数据倾斜的解决方案(来自数盟的一篇文章《数据倾斜是多么痛?spark作业/面试/调优必备秘籍》,见文末参考),但核心思想也可迁移到其它框架的使用上,部分需要看图更好理解(毕竟本文只是对其理解,相当于摘要,建议直接打开文末参考的连接)。

之前在做垃圾短信分类中,也遇到过OOM的问题,我的解决方案是使用RDD.randomSplit对RDD进行指定比例切分出多个subRDD,没有本文考虑地如此细致。

 
Continue reading

PySpark经常碰到的几个问题

目前还没有具体的解决方案,对这几个问题做记录。

  1. PiplineRDD不能collect或者take,first,count之类的操作
  2. 有时会遇到deep recursion的问题。pickle.PicklingError: Could not pickle object as excessively deep recursion required.
  3. (已解决)关于广播变量。Exception: It appears that you are attempting to reference SparkContext from a broadcast variable, action, or transforamtion. SparkContext can only be used on the driver, not in code that it run on workers. For more information, see SPARK-5063.
  4. (临时方案)内存不够。WARN MemoryStore: Not enough space to cache rdd_8_1 in memory! (computed 107.7 MB so far),更多解决OOM方案,请查看Spark对数据倾斜的八种处理方法
  5. (已解决)不能启用多个SparkContext。Cannot run multiple SparkContexts at once; existing SparkContext(app=spam-msg-classifier, master=local[8]) created by __init__

Continue reading

Ubuntu下导入PySpark到Shell和Pycharm中

实习后面需要用到spark,虽然之前跟了edX的spark的课程以及用spark进行machine learning,但那个环境是官方已经搭建好的,但要在自己的系统里将PySpark导入shell(或在Python里可以import pyspark)还是需要做一些操作的。(下图,忘了先define一个sc,+。+|||)自己built的和官方pre-built的版本都可以使用这个方法。 我们的目标是

  1. 任意目录下在shell里启动pyspark
  2. 在Python里import pyspark(包括ImportError: No module named py4j.java_gateway的解决办法,参考推库的文章,见参考)
  3. 导入pyspark到pycharm中也可以使用。因为我发现第1,2实现了后,尽管在shell中输入Python后,以及在ipython notebook中可直接import pyspark,但Pycharm(同IDEA)中无法直接import进来!需要配置环境变量

importpyspark 今天查了下有关导入pyspark的相关内容,stakoverflow上有人回答了这个问题(见后文reference),照着这个以及其它的回答提示混合起来看了下,实现了将Pyspark导入到Python里。 下面我就略去安装Spark的过程(Spark,JDK,scala的环境配置),不过导入PySpark和安装Spark也都是配置环境变量,我下面将/etc/profile和~/.bashrc两个文件下的内容放出。我这里用的Spark的版本(spark-1.2.0-bin-hadoop2.4)是1.2官方已经build好的version。 Continue reading

【PySpark】First Notebook: Virtual machine test and assignment submission

This notebook will test that the virtual machine (VM) is functioning properly and will show you how to submit an assignment to the autograder. To move through the notebook just run each of the cells. You will not need to solve any problems to complete this lab. You can run a cell by pressing “shift-enter”, which will compute the current cell and advance to the next cell, or by clicking in a cell and pressing “control-enter”, which will compute the current cell and remain in that cell. At the end of the notebook you will export / download the notebook and submit it to the autograder.

本节是测试PySpark的环境,测试Spark函数,test类库,绘图库,公式(因为不是Jupyter环境,我在下面截了图),下载导出并上传代码。

This notebook covers: 

  • Part 1: Test Spark functionality
  • Part 2: Check class testing library
  • Part 3: Check plotting
  • Part 4: Check MathJax formulas
  • Part 5: Export / download and submit

Continue reading