pySpark学习笔记

pySpark学习笔记

编译python,有些依赖需要下载下
sudo yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel


cd 解压后的python包,注意下载3版本的

mkdir python3

./configure --prefix=/home/hadoop/app/python3

make && make install


Spark编译上波SparkSQL我已经讲过怎么编译了,其他还好,主要是换成阿里的镜像,不然慢到怀疑人生

1.RDD是一个抽象类
2.带泛型的,可以支持多种类型:String,Person,User

A Resilient Distributed Dataset (RDD), the basic abstraction in Spark. Represents an immutable,partitioned collection of elements that can be operated on in parallel.
RDD是一个弹性的分布式的数据集,是spark的基本抽象,RDD是不可变的,并且它由多个partition构成(可能分布在多台机器上,可以存memory上,也可以存disk里等等),可以进行并行操作
弹性:分布式计算时可容错
不可变:一旦产生就不能被改变


单机存储/计算 ==>分布式存储/计算

1)数据的存储:切割。 HDFS的Block
2)数据的计算:切割(分布式并行计算) MapReduce/Spark
3)存储+计算    : HDFS/S3+MapReduce/Spark

RDD的特性
Internally, each RDD is characterized by five main properties:

- A list of partitions  —— RDD由很多partition构成,在spark中,计算式,有多少partition就对应有多少个task来执行

- A function for computing each split ——对RDD做计算,相当于对RDD的每个split或partition做计算

- A list of dependencies on other RDDs  ——RDD之间有依赖关系,可溯源

-Optionally, a Partitioner for key-value RDDs (e.g. to say that the RDD is hash-partitioned)
如果RDD里面存的数据是key-value形式,则可以传递一个自定义的Partitioner进行重新分区,比如可以按key的hash值分区


- Optionally, a list of preferred locations to compute each split on (e.g. block locations for an HDFS file) ——
最优的位置去计算,也就是数据的本地性
计算每个split时,在split所在机器的本地上运行task是最好的,避免了数据的移动;split有多个副本,所以preferred location不止一个
数据在哪里,应优先把作业调度到数据所在机器上,减少数据的IO和网络传输,这样才能更好地减少作业运行时间(木桶原理:作业运行时间取决于运行最慢的task所需的时间),提高性能

note:
pyspark启动是默认的python2.75

配置一下环境变量

export PATH=/home/hadoop/app/python3/bin:$PATH

export PYSPARK_PYTHON=python3.6

source 一下

pyspark主要了解下rdd 

你可能感兴趣的:(大数据之路,spark)