一.前言

前面我们学习的是使用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. [源创] STM32F103ZET6 基于XMODEM 通讯的 BOOTLOADER案列IAP

    网上好多初学者 都想知道如何更好的用IAP,BOOTLOADER 功能 我给大家一个我自己的基于Xmodem的例子, 开发环境  KEIL 5.14 + STD标准库 芯片 STM32F103ZET6 ...

  2. Jquery拓展方法

    拓展JQuery一般有两个方法: 1.全局拓展 比如 $.ajax()就是全局函数 拓展方法: Jquery.extend(); 比如: $.extend({ hello:function(mynam ...

  3. Java实现 LeetCode 838 推多米诺(暴力模拟)

    838. 推多米诺 一行中有 N 张多米诺骨牌,我们将每张多米诺骨牌垂直竖立. 在开始时,我们同时把一些多米诺骨牌向左或向右推. 每过一秒,倒向左边的多米诺骨牌会推动其左侧相邻的多米诺骨牌. 同样地, ...

  4. Java实现 蓝桥杯VIP 算法提高 陶陶摘苹果2

    算法提高 陶陶摘苹果2 时间限制:1.0s 内存限制:256.0MB 问题描述 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出n个苹果.苹果成熟的时候,陶陶就会跑去摘苹果.陶陶有个30厘米高的板凳, ...

  5. Java实现 LeetCode 191 位1的个数

    191. 位1的个数 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 '1' 的个数(也被称为汉明重量). 示例 1: 输入:000000000000000000000000000 ...

  6. Java实现字符串匹配

    1 问题描述 给定一个n个字符组成的串(称为文本),一个m(m <= n)的串(称为模式),从文本中寻找匹配模式的子串. 2 解决方案 2.1 蛮力法 package com.liuzhen.c ...

  7. java实现第五届蓝桥杯生物芯片

    生物芯片 X博士正在研究一种生物芯片,其逻辑密集度.容量都远远高于普通的半导体芯片. 博士在芯片中设计了 n 个微型光源,每个光源操作一次就会改变其状态,即:点亮转为关闭,或关闭转为点亮. 这些光源的 ...

  8. java实现第五届蓝桥杯格子放鸡蛋

    格子放鸡蛋 X星球的母鸡很聪明.它们把蛋直接下在一个 N * N 的格子中,每个格子只能容纳一枚鸡蛋.它们有个习惯,要求:每行,每列,以及每个斜线上都不能有超过2个鸡蛋.如果要满足这些要求,母鸡最多能 ...

  9. ntpq无法查询同步信息,显示The specified class was not found

    年初时工班发现工作站和服务器都没办法用ntpq看时钟同步了,如下图所示.输入ntpq-p 就显示"The specified class was not found" 通过排查,发 ...

  10. Linux笔记(第一天)

    一.命令 lscpu                               -- 查看cpu free                                 -- 内存查看 -m 以M ...