星期日, 二月 08, 2015

在ipython notebook上运行spark

周末无事,看到了这篇文章。于是照猫画虎尝试了一番,顺便把官网上的文档看了一些。记录以下以备忘。(目前只尝试了spark在单机上的运行)

安装spark
只需要去官网下载预编译好的最新版本即可,然后回来解压
tar -xzf spark-1.2.0-bin-hadoop2.4.tgz
放到自己选定的目录中,加一个软链接
ln -s /srv/spark-1.2.0 /srv/spark
然后设置环境变量,~/.bash_profile or ~/.profile
export SPARK_HOME=/srv/spark
export PATH=$SPARK_HOME/bin:$PATH

之后在终端上运行pyspark应该可以看到欢迎画面了。

设置notebook
为了在ipython notebook中运行spark需要设置一个启动文件。先设置一个profile
ipython profile create spark
在路径下加一个py文件 $HOME/.ipython/profile_spark/startup/00-pyspark-setup.py

文件中放如下内容,注意和自己的目录有关。
import os
import sys
# Configure the environment
if 'SPARK_HOME' not in os.environ:
    os.environ['SPARK_HOME'] = '/srv/spark'
# Create a variable for our root path
SPARK_HOME = os.environ['SPARK_HOME']
# Add the PySpark/py4j to the Python Path
sys.path.insert(0, os.path.join(SPARK_HOME, "python", "build"))
sys.path.insert(0, os.path.join(SPARK_HOME, "python"))

之后在启动notebook时要加一个profile参数
ipython notebook --profile spark

hello world
在notebook中尝试了spark的hello world任务,即word count。
from pyspark import  SparkContext
sc = SparkContext( 'local[4]')
lines = sc.textFile("some.txt")
words = lines.flatMap(lambda line: line.split())
pairs = words.map(lambda s: (s, 1))
counts = pairs.reduceByKey(lambda a, b: a + b)
result = counts.collect()
#counts.saveAsTextFile("wc")

后面有空再去研究如何用spark做数据分析和机器学习。

1 条评论: