因为在虚拟机linux上已经部署好了spark,但是每次编写好spark的python脚本程序都得在虚拟机上测试,很麻烦,所以就在本地的win7系统下,结合pycharm开发工具,搭建可本地测试运行环境。

本地运行spark的python脚本程序,当然需要spark的相关环境,所以前提也要在本地win7下搭建好spark环境

【步骤思路如下】
1. 搭建本地测试的spark环境 2. 在pycharm 开发工具中配置spark环境指向,这样脚本运行时,就能成功调用spark的相关资源包。 3.
编写好程序,运行
【1搭建本地测试的spark环境】
为了避免版本不一致导致的问题,所以本地win下安装的spark版本和虚拟机上的spark版本一致。
spark 依赖scala scala 依赖jdk ,所以 jdk 和scala也都得配置安装。
虚拟机上的
jdk1.7 scala 2.11.8 spark-2.0.1


在本地window上安装版本最好也一致,如下图。



下载对应的window系统版本(jdk1.7的linux和window是不一样的,
scala和spark在inux和window是一样的,因为jdk是为了实现系统平台无关性,所以跟系统有关,scala,spark是运行在jdk之上,已经是平台无关了)。配置jdk、scala、spark的相关环境变量。

【2安装python环境】


不同的spark支持python版本有所不同,可以通过 spark目录/bin/pyspark.sh文件查看版本要求 。
if hash python2.7 2>/dev/null; then # Attempt to use Python 2.7, if installed:
DEFAULT_PYTHON="python2.7" else DEFAULT_PYTHON="python" fi
最新版本3.6 好像也不怎么良好,python3.6环境中会报如下错误
TypeError: namedtuple() missing 3 required keyword-only arguments: 'verbose',
'rename', and 'module'。

所以安装2.7或则以上的,我选择的python 3.5版本
配置好python3.5 环境变量后,查看能否正常运行。


【3安装配置pycharm】
下载安装好pychram(破解方法自行百度,学生的话,如果有学校邮箱的话,可以免费注册)
新建testspark的python项目,编写test.py脚本如下
import os import sys import re try: from pyspark import SparkContext from
pysparkimport SparkConf print("Successfully imported Spark Modules") except
ImportErroras e: print("Can not import Spark Modules", e)

选中tesy.py 右键选中执行【run ‘test.py’】 操作,会输出

Can not import Spark Modules No module named 'pyspark'

这就是代码中try操作未成功。加载spark的库文件失败
from pyspark import SparkContext from pyspark import SparkConf
需要配置运行尝试——spark库文件位置,配置如下:Run菜单栏——>Edit
Configurations——>选中脚本文件tesy.py->Environment variables ——>添加spark环境变量——>apply
然后保存再次运行






//本地spark目录下的python位置及py4j的位置 PYTHONPATH=C:\Java\spark-2.0.1-bin-hadoop2.7
\python;C:\Java\spark-2.0.1-bin-hadoop2.7\python\lib\py4j-0.10.3-src.zip
//spark 目录位置 SPARK_HOME=C:\Java\spark-2.0.1-bin-hadoop2.7
再次执行test.py



成功加载。就可以在本地测试spark代码了。

注意:因为配置的环境作用对象是当前py脚本,所以新建了py文件后,需要再次增加PYTHONPATH和SPARK_HOME环境变量。

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信