当前位置:首页 » 编程语言 » python调用spark

python调用spark

发布时间: 2022-06-14 17:39:44

‘壹’ 机器学习实践:如何将Spark与python结合

可以学习一下林大贵这本书,从头到尾教你如何使用python+spark+hadoop实现常用的算法训练和部署。

《Python+Spark2.0+Hadoop机器学习与大数据实战_林大贵》

链接:https://pan..com/s/1VGUOyr3WnOb_uf3NA_ZdLA

提取码:ewzf

‘贰’ 最新的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

‘叁’ 如何在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

‘肆’ 如何在Python IDE spyder 中集成运行spark

  1. local:本地单进程模式,用于本地开发测试Spark代码

  2. standalone:分布式集群模式,Master-Worker架构,Master负责调度,Worker负责具体Task的执行

  3. on yarn/mesos:运行在yarn/mesos等资源管理框架之上,yarn/mesos提供资源管理,spark提供计算调度,并可与其他计算框架(如MapRece/MPI/Storm)共同运行在同一个集群之上 (使用cloudera搭建的集群就是这种情况)

  4. on cloud(EC2):运行在AWS的EC2之上。

‘伍’ spark python脚本怎么执行

前段时间使用了一下google的博客空间,感觉也很一般,所以现在把那里的几篇文章转过来。
执行python脚本只需要对python文件做如下操作即可:
在python文件里第一行加上#!
/usr/bin/python,即你的python解释器所在的目录。另外还有一种写法是#!
/usr/bin/env
python
编辑完成python脚本文件后为它加上可执行权限。例如你的python脚本文件叫做runit.py,那么就在shell中输入如下命令:chmod
+x
runit.py
之后直接在shell中输入./runit.py就可以执行你的python程序了。
当然这是在Linux下的操作,如果想在windows下直接执行Python程序,就需要使用py2exe工具将python源程序编译成exe文件了。

‘陆’ 如何用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!"回车

再输入: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)

‘捌’ 如何运行含spark的python脚本

~spark$ bin/spark-submit first.py
-----------first.py-------------------------------
from pyspark import SparkConf, SparkContext
conf = SparkConf().setMaster("local").setAppName("My App")
sc = SparkContext(conf = conf)
lines = sc.textFile("first.py")
pythonLines = lines.filter(lambda line: "Python" in line)
print "hello python"
print pythonLines.first()
print pythonLines.first()
print "hello spark!"
---------------------------------------------------
hello python
pythonLines = lines.filter(lambda line: "Python" in line)
pythonLines = lines.filter(lambda line: "Python" in line)
hello spark!

到spark的安装目录下/bin 下面 spark-submit ***.py 即可

‘玖’ spark 与python 怎么交互的

前段时间使用了一下google的博客空间,感觉也很一般,所以现在把那里的几篇文章转过来。 执行python脚本只需要对python文件做如下操作即可: 在python文件里第一行加上#! /usr/bin/python,即你的python解释器所在的目录。另外还有一种写法是#! ...

‘拾’ python可以直接在spark上运行吗

在机器学习和数据挖掘算法实现中: 1、R拥有丰富的算法包,且对最新的算法响应较快,但是致命的缺点是每个包都需要进行学习,学习成本相对来说比加大,而Python的scikit-learn包封装了所有算法,实现函数一致

热点内容
给定一个算法 发布:2024-05-19 17:50:08 浏览:863
恋爱生物种离线缓存 发布:2024-05-19 17:49:15 浏览:578
卡巴斯基服务器如何连接外网更新 发布:2024-05-19 17:42:06 浏览:559
手机虚荣怎么连接服务器 发布:2024-05-19 17:41:47 浏览:729
linux修改保存文件 发布:2024-05-19 17:30:38 浏览:665
网络有你脚本 发布:2024-05-19 17:29:55 浏览:770
黎明我的世界服务器 发布:2024-05-19 17:17:34 浏览:538
雷神g50如何设置安卓原生模式 发布:2024-05-19 16:50:04 浏览:120
c语言小数四舍五入 发布:2024-05-19 16:23:28 浏览:525
数据库被注入攻击 发布:2024-05-19 16:21:31 浏览:835