一.前言

前面我们学习的是使用Scala和Java开发Spark。最近补充了下Python基础,那么就用Python开发下Spark。Python开发Spark简称PySpark。

二.环境准备

1.安装Python环境

安装方式有两种

使用原生方式安装

直接去官网下载,window下载 xxx_executable installer这样的。

下载完后傻瓜式安装(注意安装的时候勾选将Python配置到环境。注意安装路径不要有中文,不要有空格。

使用anaconda安装

下载anaconda,然后傻瓜式安装,安装完后就会默认给安装一个Python版本。

如果我们需要手动配置版本,请使用上一篇博文介绍,将Python下载后,手动配置下环境即可。

2.配置Spark Home

下载Spark并解压,然后在系统变量里面添加变量名 SPARK_HOME ,变量值就是Spark解压路径,比如我 的F:\BigDataPack\spark\spark-2.4.5-bin-hadoop2.7

添加完后,再在Path里面添加 %SPARK_HOME%\bin 。然后确定即可。

3.安装pyspark

pyspark是操作spark的库。安装方式有两种:

使用pip安装

直接在cmd运行,pip install pyspark

直接拷贝

进入 spark根目录/python/lib 下面,将pyspark解压,将解压后的文件复制到

anaconda或者你手动安装的python 的 Lib/site-packages 下面。

4. 安装py4j

py4j是负责python和java通信的。安装方式有两种:

使用pip安装

直接在cmd运行,pip install py4j

直接拷贝

进入 spark根目录/python/lib 下面,将py4j解压,将解压后的文件复制到

anaconda或者你手动安装的python 的 Lib/site-packages 下面。

三.使用案例

项目结构:

BrowserCard文件内容:

192.156.345.6 www.baidu.com
192.156.345.6 www.shuai7boy.vip
192.156.345.6 www.google.com
145.345.67.78 www.baidu.com
192.156.345.6 www.baidu.com
145.345.67.78 www.cnblogs.com
135.674.33.23 www.csdn.cn

words文件内容:

hello world
hello YiMing
hello world

案例1.计算wordcount

代码如下:

from pyspark import SparkContext, SparkConf

if __name__ == '__main__':
conf = SparkConf().setAppName("word").setMaster("local") sc = SparkContext(conf=conf)
rdd = sc.textFile("words")
result = rdd.flatMap(lambda line: line.split(" ")).map(lambda line: (line, 1)).reduceByKey(lambda a, b: a + b)
result.foreach(print)

运行结果:

E:\SoftCollection\Anaconda\Install\python.exe F:/Code/Python/PySparkTest/UV.py
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
[Stage 2:> (0 + 1) / 1]('www.baidu.com', 2)
('www.cnblogs.com', 1)
('www.csdn.cn', 1)
('www.google.com', 1)
('www.shuai7boy.vip', 1) Process finished with exit code 0

案例2.计算pv

代码如下:

from pyspark import SparkConf, SparkContext

if __name__ == '__main__':
conf = SparkConf().setMaster("local").setAppName("PV")
sc = SparkContext(conf=conf)
cards = sc.textFile("BrowserCard")
result = cards.map(lambda line: (line.split(" ")[1], 1)).reduceByKey(lambda a, b: a + b)
result.foreach(print)

运行结果:

E:\SoftCollection\Anaconda\Install\python.exe F:/Code/Python/PySparkTest/PV.py
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
[Stage 0:> (0 + 1) / 1]('www.baidu.com', 3)
('www.shuai7boy.vip', 1)
('www.google.com', 1)
('www.cnblogs.com', 1)
('www.csdn.cn', 1) Process finished with exit code 0

案例3.计算uv

代码如下:

from pyspark import SparkConf, SparkContext

if __name__ == '__main__':
conf = SparkConf().setMaster("local").setAppName("PV")
sc = SparkContext(conf=conf)
cards = sc.textFile("BrowserCard")
result = cards.map(lambda line: line.split(" ")[0] + "_" + line.split(" ")[1]).distinct().map(
lambda line: (line.split(
"_")[1], 1)).reduceByKey(lambda a, b: a + b).sortByKey();
result.foreach(print)

运行结果:

E:\SoftCollection\Anaconda\Install\python.exe F:/Code/Python/PySparkTest/UV.py
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
[Stage 0:> (0 + 1) / 1]('www.baidu.com', 2)
('www.cnblogs.com', 1)
('www.csdn.cn', 1)
('www.google.com', 1)
('www.shuai7boy.vip', 1) Process finished with exit code 0

系列传送门

入门大数据---PySpark的更多相关文章

  1. 入门大数据---Flink学习总括

    第一节 初识 Flink 在数据激增的时代,催生出了一批计算框架.最早期比较流行的有MapReduce,然后有Spark,直到现在越来越多的公司采用Flink处理.Flink相对前两个框架真正做到了高 ...

  2. 入门大数据---Spark_Streaming整合Flume

    一.简介 Apache Flume 是一个分布式,高可用的数据收集系统,可以从不同的数据源收集数据,经过聚合后发送到分布式计算框架或者存储系统中.Spark Straming 提供了以下两种方式用于 ...

  3. 入门大数据---SparkSQL外部数据源

    一.简介 1.1 多数据源支持 Spark 支持以下六个核心数据源,同时 Spark 社区还提供了多达上百种数据源的读取方式,能够满足绝大部分使用场景. CSV JSON Parquet ORC JD ...

  4. 入门大数据---Hadoop是什么?

    简单概括:Hadoop是由Apache组织使用Java语言开发的一款应对大数据存储和计算的分布式开源框架. Hadoop的起源 2003-2004年,Google公布了部分GFS和MapReduce思 ...

  5. 入门大数据---MapReduce-API操作

    一.环境 Hadoop部署环境: Centos3.10.0-327.el7.x86_64 Hadoop2.6.5 Java1.8.0_221 代码运行环境: Windows 10 Hadoop 2.6 ...

  6. 入门大数据---Flume整合Kafka

    一.背景 先说一下,为什么要使用 Flume + Kafka? 以实时流处理项目为例,由于采集的数据量可能存在峰值和峰谷,假设是一个电商项目,那么峰值通常出现在秒杀时,这时如果直接将 Flume 聚合 ...

  7. 入门大数据---安装ClouderaManager,CDH和Impala,Hue,oozie等服务

    1.要求和支持的版本 (PS:我使用的环境,都用加粗标识了.) 1.1 支持的操作系统版本 操作系统 版本 RHEL/CentOS/OL with RHCK kernel 7.6, 7.5, 7.4, ...

  8. 入门大数据---Kylin是什么?

    一.Kylin是什么? Apache Kylin是一个开源的.分布式的分析型数据仓库,提供Hadoop/Spark 上的SQL查询接口及多维度分析(OLAP)能力以支持超大规模的数据,最初由eBay开 ...

  9. 大数据学习系列之Hadoop、Spark学习线路(想入门大数据的童鞋,强烈推荐!)

    申明:本文出自:http://www.cnblogs.com/zlslch/p/5448857.html(该博客干货较多) 1 Java基础: 视频方面:          推荐<毕向东JAVA ...

随机推荐

  1. Java实现 蓝桥杯 算法训练 关联矩阵

    算法训练 关联矩阵 时间限制:1.0s 内存限制:512.0MB 提交此题 问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵. 输入格式 第一行两个整数n.m,表示图中结点和边的数目.n&l ...

  2. Java实现UVA10131越大越聪明(蓝桥杯每周一题)

    10131越大越聪明(蓝桥杯每周一题) [问题描述] 一些人认为,大象的体型越大,脑子越聪明.为了反驳这一错误观点,你想要分析一组大象的数据,找出尽量 多的大象组成一个体重严格递增但 IQ 严格递减的 ...

  3. Java实现 LeetCode 7整数反转

    7. 整数反转 给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转. 示例 1: 输入: 123 输出: 321 示例 2: 输入: -123 输出: -321 示例 3: 输入: ...

  4. Java实现LeetCode_0014_LongestCommonPrefix

    package javaLeetCode.primary; /** * Write a function to find the longest common prefix string amongs ...

  5. Java实现 蓝桥杯 历届试题幸运数

    问题描述 幸运数是波兰数学家乌拉姆命名的.它采用与生成素数类似的"筛法"生成 . 首先从1开始写出自然数1,2,3,4,5,6,- 1 就是第一个幸运数. 我们从2这个数开始.把所 ...

  6. java代码(3)----guava复写Object常用方法

    guava复写Object常用方法 Guava是一个Google的基于java1.6的类库集合的扩展项目,这个库提供用于集合,缓存,支持原语,并发性,字符串处理,I/O和验证的实用方法, 这些高质量的 ...

  7. python IDE pycharm的安装与使用

    Python开发最牛逼的IDE——pycharm (其实其它的工具,例如eclipse也可以写,只不过比较麻烦,需要安装很多的插件,所以说pycharm是最牛逼的) pycharm,下载专业版的,不要 ...

  8. AbstractCollection类中的 T[] toArray(T[] a)方法源码解读

    一.源码解读 @SuppressWarnings("unchecked") public <T> T[] toArray(T[] a) { //size为集合的大小 i ...

  9. Vue路由-详细总结

    Vue路由vue-router   前面的话 在Web开发中,路由是指根据URL分配到对应的处理程序.对于大多数单页面应用,都推荐使用官方支持的vue-router.Vue-router通过管理URL ...

  10. 2020最新IDEA插件大集合,一款能帮助你写代码的工具是多么重要

    摘要 12款为用户精心打造的Idea插件,含盖前后端,另把使用小技巧分享给大家,提高大家的码率,希望对你们有帮助! Lombok Lombok为Java项目提供了非常有趣的附加功能,使用它的注解可以有 ...