sparkpython环境
‘壹’ 机器学习实践:如何将Spark与python结合
可以学习一下林大贵这本书,从头到尾教你如何使用python+spark+hadoop实现常用的算法训练和部署。
《Python+Spark2.0+Hadoop机器学习与大数据实战_林大贵》
链接:https://pan..com/s/1VGUOyr3WnOb_uf3NA_ZdLA
提取码:ewzf
‘贰’ 在给Python搭spark环境,但是报错,哪位大神能看出来我是哪步错了么
1)输入:welcome = "Hello!" 回车 再输入:print welcome 或者直接 welcome 回车就可以看到输出 Hello! 2) 1 2 3 4 [html] view plain welcome = "hello" you = "world!" print welcome+you 输出:helloworld! 以上使用的是字符串
‘叁’ 如何在ipython或python中使用Spark
在ipython中使用spark
说明:
spark 1.6.0
scala 2.10.5
spark安装路径是/usr/local/spark;已经在.bashrc中配置了SPARK_HOME环境变量。
方法一
/usr/local/Spark/bin/pyspark默认打开的是Python,而不是ipython。通过在pyspark文件中添加一行,来使用ipython打开。
cp pyspark ipyspark
vi ipyspark
# 在最前面添加
IPYTHON=1
# 启动
ipyspark
方法二:
通过为spark创建一个ipython 配置的方式实现。
# 为spark创建一个ipython 配置
ipython profile create spark
# 创建启动配置文件
cd ~/.config/ipython/profile_spark/startup
vi 00-pyspark-setup.py
在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", "pyspark"))
sys.path.insert(0, os.path.join(SPARK_HOME, "python", "lib", "py4j-0.9-src.zip"))
sys.path.insert(0, os.path.join(SPARK_HOME, "python"))
启动ipython
ipython –profile spark
测试程序
在ipython中输入一下命令,如果下面的程序执行完后输出一个数字,说明正确。
from pyspark import SparkContext
sc = SparkContext( 'local', 'pyspark')
def isprime(n):
"""
check if integer n is a prime
"""
# make sure n is a positive integer
n = abs(int(n))
# 0 and 1 are not primes
if n < 2:
return False
# 2 is the only even prime number
if n == 2:
return True
# all other even numbers are not primes
if not n & 1:
return False
# for all odd numbers
for x in range(3, int(n**0.5)+1, 2):
if n % x == 0:
return False
return True
# Create an RDD of numbers from 0 to 1,000,000
nums = sc.parallelize(xrange(1000000))
# Compute the number of primes in the RDD
print 逗Result: 地, nums.filter(isprime).count()
方法三
将上面的程序放入test.py文件,执行命令python test.py。发现错误。因为没有将pyspark路径加入PYTHONPATH环境变量。
在~/.bashrc或/etc/profile中添加如下内容:
# python can call pyspark directly
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/pyspark:$SPARK_HOME/python/lib/py4j-0.9-src.zip:$PYTHONPATH
执行如下命令:
# 使配置生效
source ~/.bashrc
# 测试程序
python test.py
此时,已经能够运行了。
‘肆’ 如何运行含spark的python脚本
前段时间使用了一下google的博客空间,感觉也很一般,所以现在把那里的几篇文章转过来。执行python脚本只需要对python文件做如下操作即可:在python文件里第一行加上#!/usr/bin/python,即你的python解释器所在的目录。另外还有一种写法是#!/usr/bin/envpython编辑完成python脚本文件后为它加上可执行权限。例如你的python脚本文件叫做runit.py,那么就在shell中输入如下命令:chmod+xrunit.py之后直接在shell中输入./runit.py就可以执行你的python程序了。当然这是在linux下的操作,如果想在windows下直接执行Python程序,就需要使用py2exe工具将python源程序编译成exe文件了。
‘伍’ 最新的spark支持python的什么版本
两种方法:
使用 spark-submit 解释执行python脚本
使用 python 解释执行python脚本
1. 使用Spark-submit解释执行python脚本
python脚本中需要在开头导入spark相关模块,调用时使用spark-submit提交,示例代码如下:
===========================================================
"""odflow.py"""
from pyspark import SparkContext
fileDir = "/TripChain3_Demo.txt"
# sc = SparkContext("local", "ODFlow")
sc = SparkContext("spark://ITS-Hadoop10:7077", "ODFlow")
lines = sc.textFile(fileDir)
# python不能直接写多行的lambda表达式,所以要封装在函数中
def toKV(line):
arr = line.split(",")
t = arr[5].split(" ")[1].split(":")
return (t[0]+t[1]+","+arr[11]+","+arr[18],1)
r1 = lines.map( lambda line : toKV(line) ).receByKey(lambda a,b: a+b)
# 排序并且存入一个(repartition)文件中
r1.sortByKey(False).saveAsTextFile("/pythontest/output")
===========================================================
发布命令为:
spark-submit \
--master spark://ITS-Hadoop10:7077 \
odflow.py
2. 使用 python 解释执行python脚本
直接用python执行会出现错误:
ImportError: No mole named pyspark
ImportError: No mole named py4j.java_gateway
缺少pyspark和py4j这两个模块,这两个包在Spark的安装目录里,需要在环境变量里定义PYTHONPATH,编辑~/.bashrc或者/etc/profile文件均可
vi ~/.bashrc # 或者 sudo vi /etc/profile
# 添加下面这一行
export PYTHONPATH=$SPARK_HOME/python/:$SPARK_HOME/python/lib/py4j-0.8.2.1-src.zip:$PYTHONPATH
# 使其生效
source ~/.bashrc # 或者 sudo source /etc/profile
然后关闭终端,重新打开,用python执行即可
python odflow.py
‘陆’ 有没有哪位大神一下linux系统下 Python和spark的配置方法和环境变量截图的,总是失败然后进不去系统
第一个问题:最简单的方法是将/usr/local/bin/python这个删除或者移走,之后系统就只能找到2.6.6版本的了。 第二个问题:命令路径查找系统首先在当前目录下查找,如果没有,按照PATH变量所指定的目录搜索。PATH变量中目录按起始最高优先级,结束...
‘柒’ 如何用Python写spark
1.RDD是PariRDD类型
def add1(line):
return line[0] + line[1]
def add2(x1,x2):
return x1 + x2
sc = SparkContext(appName="gridAnalyse")
rdd = sc.parallelize([1,2,3])
list1 = rdd.map(lambda line: (line,1)).map(lambda (x1,x2) : x1 + x2).collect() #只有一个参数,通过匹配来直接获取(赋值给里面对应位置的变量)
list1 = rdd.map(lambda line: (line,1)).map(lambda x1,x2 : x1 + x2).collect() #错误,相当于函数有两个参数
list2 = rdd.map(lambda line: (line,1)).map(lambda line : line[0] + line[1]).collect() #只有一个参数,参数是Tuple或List数据类型,再从集合的对应位置取出数据
list3 = rdd.map(lambda line: (line,1)).map(add1).collect() #传递函数,将Tuple或List类型数据传给形参
list4 = rdd.map(lambda line: (line,1)).map(add2).collect() #错误,因为输入只有一个,却有两个形参
当RDD是PairRDD时,map中可以写lambda表达式和传入一个函数。
a、写lambda表达式:
可以通过(x1,x2,x3)来匹配获取值;或者使用line获取集合,然后从集合中获取。
b、传入函数
根据spark具体的transaction OR action 操作来确定自定义函数参数的个数,此例子中只有一个参数,从形参(集合类型)中获取相应位置的数据。
‘捌’ 如何搭建python开发spark的环境
1)输入:welcome = "Hello!" 回车
再输入:print welcome 或者直接 welcome 回车就可以看到输出 Hello!
2)
1
2
3
4
[html] view plain
welcome = "hello"
you = "world!"
print welcome+you
输出:helloworld!
以上使用的是字符串,变量还有几种类型:数,字符串,列表,字典,文件。其他的和别的语言类似,下面先讲下列表:
[html] view plain
my_list = [] //这个就产生了一个空的列表。然后给它赋值
my_list = [1,2]
print my_list
my_list.append(3)
print my_list
4)字典:
1
2
3
4
[html] view plain
contact = {}
contact["name"]="shiyuezhong"
contact["phone"]=12332111
5)结合列表和字典:
1
2
3
4
5
6
7
8
9
10
[html] view plain
contact_list=[]
contact1={}
contact1['name']='shiyuezhong'
contact1['phone']=12332111
contact_list.append(contact1)
contact2={}
contact2['name']='buding'
contact2['phone']=88888888
contact_list.append(contact2)
‘玖’ 求助,python + spark运行程序出现错误
你全是win环境
代码没有什么太多的问题 spark环境检查 测试pyspark能否正常使用
再像你这样提交spark作业
tmprdd1 = csdnRDD.map(lambda x: (x.split("\t")[2]))
x.split("\t")会产生一个list,有些数据是异常异常,产生的list不一定会有三个元素,所以就会异常退出。
你可以使用csdnRDD.map(lambda x:x.split("\t")).filter(lambda x:len(x)<3) 看看有哪一写异常数据,然后确定如何过滤掉这些异常数据。
‘拾’ python开发spark环境该如何配置,又该如何操作
1)输入:welcome="Hello!"回车
再输入:printwelcome或者直接welcome回车就可以看到输出Hello!
2)
[html]viewplain
welcome="hello"
you="world!"
printwelcome+you
输出:helloworld!
以上使用的是字符串,变量还有几种类型:数,字符串,列表,字典,文件。其他的和别的语言类似,下面先讲下列表:
3)
[html]viewplain
my_list=[]//这个就产生了一个空的列表。然后给它赋值
my_list=[1,2]
printmy_list
my_list.append(3)
printmy_list
4)字典:
[html]viewplain
contact={}
contact["name"]="shiyuezhong"
contact["phone"]=12332111
5)结合列表和字典:
[html]viewplain
contact_list=[]
contact1={}
contact1['name']='shiyuezhong'
contact1['phone']=12332111
contact_list.append(contact1)
contact2={}
contact2['name']='buding'
contact2['phone']=88888888
contact_list.append(contact2)