Linux虚拟机RDD和PySpark基本操作

我用的是spark-2.3.0-bin-hadoop2.7.tar这版本的。

下面我来说一下的操作步走,想使用spark我们肯定要安装它

第一步:

在你的虚拟机中输入pip install pyspark如果出现下图说明证明


第二步:

如果你有安装了XFT这个插件就用你的这个插件把你的pyspark这个压缩包放进去

第三步:

我们解压这个文件tar -xvf  spark-2.3.0-bin-hadoop2.7.tar -C opt


第四步:

我们配置一下他的环境变量就可以了 在你虚拟机中 输入这个命令在你的工作目录(~)vi ~/.bashrc然后退出这个界面然后刷新source ~/.bashrc


第五步:

我们把这个做好了,就可以来写着

1.#导入模块
import pyspark
#导入类
from pyspark import SparkContext,SparkConf
#创建配置,指定AppName,指定Master(主机)
conf = SparkConf(
        ).setAppName('demoRDD'
        ).setMaster('local[*]')


#创建会话
sc = SparkContext.getOrCreate(conf)
#通过会话实现对SPARK的操作
#以python list提供一个测试用的数据
data = [x for x in range(11)]
rdd = sc.parallelize(data)
print('RDD对象:',rdd,'\n记录数:',rdd.count())
partiRdd = rdd.glom()
print('RDD.GLOM Collect结果:',partiRdd.collect())
print(partiRdd.count())
print('RDD Collect结果:',rdd.collect())
#关闭会话

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

2.#换一个写法
#map操作
#filter操作
#创建会话
sc = SparkContext.getOrCreate(conf)
#通过会话实现对SPARK的操作
#以python list提供一个测试用的数据

data = [x for x in range(11)]

rdd = sc.parallelize(data)
print('RDD对象记录数:',rdd.count())
print('RDD Collect结果:\n',rdd.collect())
#判断一个数是否是偶数
def filterOdd(x):
    return x%2 == 0
#map操作,映射
#过滤操作
listA = rdd.map(lambda x:x**3
            ).filter(filterOdd
            ).collect()
print(listA)
print(rdd.collect())
#关闭会话
sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

3.#使用文本文件做数据源
sc = SparkContext.getOrCreate(conf)
rows = sc.textFile("file:///Users/chuzhengkai/Desktop/test.txt")#虚拟机文件地址
print(rows.first())
print(rows.take(2))
print(rows.count())
print(rows.top(2))

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

#使用多个文本文件

#进行词频统计
sc = SparkContext.getOrCreate(conf)
#多个文本文件获取到一个RDD里面
filesRDD = sc.wholeTextFiles('file:///Users/chuzhengkai/Desktop/*.txt')
#文件内容RDD
fileConRDD = filesRDD.map(lambda x:x[1])
#用回车符分隔字符串,形成列表
def sp(x):
    return x.split('\n')
#对每个文件内容做映射,结果是多个文件内容列表
#存在二维结构
strRDD = fileConRDD.map(sp)
#同样是映射,结果展平成一维结构
wordRDD = fileConRDD.flatMap(sp)
#结果,形成类一个元组表达一个文件,多个元组的列表
#词频统计map
wordDictRDD = wordRDD.map(lambda x:(x,1))


#Reduce
r = wordDictRDD.reduceByKey(lambda x,y:x+y)


#print(strRDD.collect())
#print(wordRDD.collect())
#print(wordDictRDD.collect())
print(r.collect())

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

from pyspark import SparkContext,SparkConf


conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)
#用 python list 初始化
data =[1,2,3,4,5,6,7,8,9]
rdd = sc.parallelize(data)
print(rdd.collect())
print(rdd.getNumPartitions())
print(rdd.glom().collect())
print(rdd.first())

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)


#读取一个文本文件
rdd = sc.textFile("file:///Users/chuzhengkai/Desktop/test.txt")
print(rdd.collect())
print(rdd.getNumPartitions())
print(rdd.glom().collect())
#执行Map运算
rdda=rdd.map(lambda x:len(x))
print(rdda.collect())
sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)


#读取所有文本文件
rdd = sc.wholeTextFiles("file:///Users/chuzhengkai/Desktop/*.txt")
a=rdd.collect()
for b in a:
    #b是一个元组(文件名,内容)
    print(b[0])
sc.stop()
----------------------------------------------------------------------------------------------------------------------------------

#变换
conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)
#用 python list 初始化
data =[x for x in range(10)]
rdd = sc.parallelize(data)
print(rdd.collect())


def pf(x):

    return x**2

----------------------------------------------------------------------------------------------------------------------------------

conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)
#用 python list 初始化
data =['Hello guys','My name is David','Welcome to USA']
rdd = sc.parallelize(data)
print(rdd.collect())


def fg(x):
    return x.split(' ')


#map操作
xrdd = rdd.map(fg)
print(xrdd.collect())


#flatMap
xrdd = rdd.flatMap(fg)
print(xrdd.collect())
sc.stop()

def ou(x):
    return x%2==0
#map运算
xrdd = rdd.map(pf)
print(xrdd.collect())
#filter运算
xrdd = rdd.map(pf).filter(ou)
print(xrdd.collect())

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

#词频统计
conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)


#读取一个文本文件
rdd = sc.textFile("file:///Users/chuzhengkai/Desktop/test0.txt")
print(rdd.collect())


def wmap(x):
    return (x,1)


def wreduce(x,y):
    return x+y


#执行Map运算
rddm=rdd.map(wmap)
print(rddm.collect())
#执行reduce运算
rddr=rddm.reduceByKey(wreduce)
print(rddr.collect())


sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

#去重复
conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)


#读取一个文本文件
rdd = sc.textFile("file:///Users/chuzhengkai/Desktop/test0.txt")
print(rdd.collect())
print(rdd.distinct().collect())

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

#排序
conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)


#读取一个文本文件
rdd = sc.textFile("file:///Users/chuzhengkai/Desktop/test0.txt")
print(rdd.collect())


def wmap(x):
    return (x,1)


def wreduce(x,y):
    return x+y


def px(x):
    return x[1]


#执行Map运算
rddm=rdd.map(wmap)
print(rddm.collect())


#执行reduce运算
rddr=rddm.reduceByKey(wreduce)
print(rddr.collect())


#对结果执行按词频排序
rdds=rddr.sortBy(px,ascending=False)
print(rdds.collectAsMap())


#取前三名
print(rdds.take(3))


#按key排序
print(rddr.sortByKey().collect())


#按key分组
print(rddm.groupByKey().map(lambda x:{x[0]:[y for y in x[1]]}).collect())

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

from pyspark import SparkContext,SparkConf


conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)
#用 python list 初始化
data =[1,2,3,4,5,6,7,8,9]
rdd = sc.parallelize(data)
print(rdd.collect())
print(rdd.getNumPartitions())
print(rdd.glom().collect())
print(rdd.first())

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)


#读取一个文本文件
rdd = sc.textFile("file:///Users/chuzhengkai/Desktop/test.txt")
print(rdd.collect())
print(rdd.getNumPartitions())
print(rdd.glom().collect())
#执行Map运算
rdda=rdd.map(lambda x:len(x))
print(rdda.collect())

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)


#读取所有文本文件
rdd = sc.wholeTextFiles("file:///Users/chuzhengkai/Desktop/*.txt")
a=rdd.collect()
for b in a:
    #b是一个元组(文件名,内容)
    print(b[0])

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

#变换
conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)
#用 python list 初始化
data =[x for x in range(10)]
rdd = sc.parallelize(data)
print(rdd.collect())


def pf(x):
    return x**2


def ou(x):
    return x%2==0
#map运算
xrdd = rdd.map(pf)
print(xrdd.collect())
#filter运算
xrdd = rdd.map(pf).filter(ou)
print(xrdd.collect())

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)
#用 python list 初始化
data =['Hello guys','My name is David','Welcome to USA']
rdd = sc.parallelize(data)
print(rdd.collect())


def fg(x):
    return x.split(' ')


#map操作
xrdd = rdd.map(fg)
print(xrdd.collect())


#flatMap
xrdd = rdd.flatMap(fg)
print(xrdd.collect())

sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

#词频统计
conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)


#读取一个文本文件
rdd = sc.textFile("file:///Users/chuzhengkai/Desktop/test0.txt")
print(rdd.collect())


def wmap(x):
    return (x,1)


def wreduce(x,y):
    return x+y


#执行Map运算
rddm=rdd.map(wmap)
print(rddm.collect())
#执行reduce运算
rddr=rddm.reduceByKey(wreduce)
print(rddr.collect())


sc.stop()

----------------------------------------------------------------------------------------------------------------------------------

#去重复
conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)


#读取一个文本文件
rdd = sc.textFile("file:///Users/chuzhengkai/Desktop/test0.txt")
print(rdd.collect())

print(rdd.distinct().collect())

----------------------------------------------------------------------------------------------------------------------------------

#排序
conf=SparkConf().setAppName('demoPrj').setMaster('local[*]')
sc = SparkContext.getOrCreate(conf)


#读取一个文本文件
rdd = sc.textFile("file:///Users/chuzhengkai/Desktop/test0.txt")
print(rdd.collect())


def wmap(x):
    return (x,1)


def wreduce(x,y):
    return x+y


def px(x):
    return x[1]


#执行Map运算
rddm=rdd.map(wmap)
print(rddm.collect())


#执行reduce运算
rddr=rddm.reduceByKey(wreduce)
print(rddr.collect())


#对结果执行按词频排序
rdds=rddr.sortBy(px,ascending=False)
print(rdds.collectAsMap())


#取前三名
print(rdds.take(3))


#按key排序
print(rddr.sortByKey().collect())


#按key分组
print(rddm.groupByKey().map(lambda x:{x[0]:[y for y in x[1]]}).collect())
sc.stop()

PySpark RDD是一种分布式的数据集,它是PySpark的核心抽象之一。RDD代表弹性分布式数据集(Resilient Distributed Dataset),它是由一系列分区组成的可并行处理的集合。RDD可以包含任何类型的对象,并且可以在集群上进行并行操作。 PySpark RDD可以通过不同的方式创建,其中一种常见的方式是使用`sc.parallelize`方法,该方法可以将Python列表、NumPy数组或Pandas Series/Pandas DataFrame转换为Spark RDD。例如,通过以下代码可以使用列表创建一个RDD: ```python rdd = sc.parallelize([1, 2, 3, 4, 5]) ``` 这将创建一个名为`rdd`的RDD对象,其中包含了列表中的元素。RDD支持各种转换和操作,例如映射、过滤、排序和聚合等。你可以使用这些操作来对RDD进行变换和计算,最终得到你想要的结果。 PySpark提供了丰富的文档来帮助你了解RDD的更多细节和使用方法。你可以参考Spark官方网站的RDD编程指南和PySpark官方文档,它们提供了详细的介绍和示例代码,帮助你更好地理解和使用PySpark RDD。 总结起来,PySpark RDD是一种分布式的可并行处理的数据集,它可以通过不同的方式创建,例如使用`sc.parallelize`方法。RDD支持各种转换和操作,它是PySpark中非常重要的概念之一。 参考文献: Spark官方网站 - RDD编程指南:http://spark.apache.org/docs/latest/rdd-programming-guide.html PySpark官方文档:https://spark.apache.org/docs/latest/api/python/index.html
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值