由于个人工作需要spark,然后我有事一个编码门外汉,数据分析出身,除了学习了简单的sql,那么目前本人掌握的语言也就是python(JAVA教程看了一周放弃了),用python学习机器学习,然后在项目中实践了部分内容,现在想把项目搬到集群上去,所以要学习spark,但是发现网上关于pyspark的教程真的是太少了,本系列讲以《pyspark实战指南》为基础,详细介绍本人学习pyspark过程中的点滴。
闲话不说了,开始
1,安装部署spark,具体就不说了 网上一大片,即使不会也没关系,有运维支持呐 ,不会的就直接找运维帮忙
2,开启spark,进入pyspark
这里说一下由于个人电脑装了是spark2.2,然后单位集群装了2.0,个人的一台服务器上传状态了1.6,所以一下代码难免会出现混淆的时候,我尽量做到标注。。。。我也是菜鸟 有错误请大家指出 共同进步
一、创建RDD
在pyspark中创建RDD有两种方法,一种是并行化一个列表,或者直接读取文件
但是所有工作的前提是初始化你的SparkSession,
spark2将SparkConf、SparkConText、SQLContext和HiveContext和StreamingContext进行了组合
import pandas as pd
from pyspark.sql import SparkSession
from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark.sql.types import *
spark=SparkSession.builder.appName("lz").getOrCreate()
sc = SparkContext.getOrCreate()
'''
SPARK1的写法如下
conf = SparkConf().setMaster("local[10]").setAppName("PySparkShell")
sc = SparkContext.getOrCreate()
sqlContest = SQLContext(sc)
'''
a,并行化一个集合
data = sc.parallelize(
[('Amber', 22), ('Alfred', 23), ('Skye',4), ('Albert', 12),
('Amber', 9)])
b,读取文件
data_from_file = sc.\
textFile(
'/Users/drabast/Documents/PySpark_Data/VS14MORT.txt.gz',
4)
RDD创建好之后,我如果想查看里面内容如何操作:
比如在之前序列化了一个data
如果是在python中那么我们直接输入data 那么这数据就呈现出来了,在pyspark中是什么样子?
如何展现?
1)小数据量的情况加,可以直接将分布式的RDD通过转换函数collect()转换成成一个数组
2)如果是大数据量的rdd,那么我们可以用take( n)来选取n个数据查看
二、RDD转换sparkDataFrame
我们知道python的DataFrame是一个数据框,其实spark的DataFrame也是这么一个概念
RDD是无schema的数据结构
DataFrame是有schema的数据结构
RDD想转换成DataFrame就是在RDD基础上加上schema,如果没有提前定义好schema的名称,转化过程中默认schema为:_1,_2,_3
RDD转换成DataFrame:
data1 = spark.createDataFrame(data)
data2 = sqlContest.createDataFrame(data)
同样 dataframe也可以转换成rdd: rdd.map(lambda x: -----)