为什么使用PySpark

Spark是大数据分析引擎,擅长批处理,支持部分机器学习算法的并行化。Spark支持Java,Scala,Python,以及R语言,其中使用Python进行编程的PySpark非常适合算法工程师和数据科学家对数据进行分析与建模。Python自身拥有最为完善的算法库,编写容易,算法相关岗位普及率高。相比于Java和Scala,PySpark可以节省大量编程时间,人的时间永远比计算机的要宝贵。

安装

安装Scala

在MacOS上进行安装,直接打开命令行,输入:

brew install scala

安装Spark

完成Scala的安装后,在命令行中继续安装Spark:

brew install apache-spark

安装完成后,在~/.bash_profile的最后配置export PATH,以我安装的Spark 3.2.1版本为例:

export SPARK_HOME=/usr/local/Cellar/apache-spark/3.2.1/libexec
export PATH="$SPARK_HOME/bin/:$PATH"

配置完成后在命令行中输入spark-shell,如果一切正常则会显示Spark的shell交互界面:

安装PySpark

在命令行中输入:

pip install pyspark

完成安装后在命令行中输入PySpark,一切正常的话可以看到PySpark的交互界面:

简单文件读取

读取CSV文件

在PySpark的交互界面中,用户可以直接使用PySpark语法进行交互式编程。首先尝试打开一个MovieLens 1M数据集中的CSV文件,假设文件路径为"/Users/data/movielens_1m/movies.csv":

>>> df = spark.read.csv('/Users/data/movielens_1m/movies.csv', header=True)
>>> df.printSchema()
root|-- movieId: string (nullable = true)|-- title: string (nullable = true)|-- genres: string (nullable = true)>>> df.show(5)
+-------+--------------------+--------------------+
|movieId|               title|              genres|
+-------+--------------------+--------------------+
|      1|    Toy Story (1995)|Animation|Childre...|
|      2|      Jumanji (1995)|Adventure|Childre...|
|      3|Grumpier Old Men ...|      Comedy|Romance|
|      4|Waiting to Exhale...|        Comedy|Drama|
|      5|Father of the Bri...|              Comedy|
+-------+--------------------+--------------------+
only showing top 5 rows

读取JSON文件

使用PySpark对JSON文件进行处理。首先读取Yelp数据集中的评论数据,文件路径为"/Users/data/archive/yelp_academic_dataset_review.json":

>>> df = spark.read.json('/Users/data/archive/yelp_academic_dataset_review.json')
>>> df.printSchema()
root|-- business_id: string (nullable = true)|-- cool: long (nullable = true)|-- date: string (nullable = true)|-- funny: long (nullable = true)|-- review_id: string (nullable = true)|-- stars: double (nullable = true)|-- text: string (nullable = true)|-- useful: long (nullable = true)|-- user_id: string (nullable = true)>>> df.show(5)
+--------------------+----+-------------------+-----+--------------------+-----+--------------------+------+--------------------+
|         business_id|cool|               date|funny|           review_id|stars|                text|useful|             user_id|
+--------------------+----+-------------------+-----+--------------------+-----+--------------------+------+--------------------+
|buF9druCkbuXLX526...|   1|2014-10-11 03:34:02|    1|lWC-xP3rd6obsecCY...|  4.0|Apparently Prides...|     3|ak0TdVmGKo4pwqdJS...|
|RA4V8pr014UyUbDvI...|   0|2015-07-03 20:38:25|    0|8bFej1QE5LXp4O05q...|  4.0|This store is pre...|     1|YoVfDbnISlW0f7abN...|
|_sS2LBIGNT5NQb6PD...|   0|2013-05-28 20:38:06|    0|NDhkzczKjLshODbqD...|  5.0|I called WVM on t...|     0|eC5evKn1TWDyHCyQA...|
|0AzLzHfOJgL7ROwhd...|   1|2010-01-08 02:29:15|    1|T5fAqjjFooT4V0OeZ...|  2.0|I've stayed at ma...|     1|SFQ1jcnGguO0LYWnb...|
|8zehGz9jnxPqXtOc7...|   0|2011-07-28 18:05:01|    0|sjm_uUcQVxab_EeLC...|  4.0|The food is alway...|     0|0kA0PAJ8QFMeveQWH...|
+--------------------+----+-------------------+-----+--------------------+-----+--------------------+------+--------------------+
only showing top 5 rows

然后通过Spark中的filter()函数过滤出stars等于3的数据:

>>> df.filter(df.stars == 3.0).show(5)
+--------------------+----+-------------------+-----+--------------------+-----+--------------------+------+--------------------+
|         business_id|cool|               date|funny|           review_id|stars|                text|useful|             user_id|
+--------------------+----+-------------------+-----+--------------------+-----+--------------------+------+--------------------+
|-_GnwXmzC3DXsHR9n...|   0|2012-11-06 07:09:57|    0|GgWFjRHhelaiUgR2-...|  3.0|3.5 stars! I got ...|     0|pRPT3vqhqpU7kHgmK...|
|IdXHHEUH4ebcxdRxC...|   1|2009-10-13 22:20:10|    4|oNNTEpc2PmB4w_vy9...|  3.0|"A Bit Embarrasse...|     7|s4NgvdIfBH3UQdccW...|
|p2BkIrOuIsxGqtV0l...|   0|2014-12-17 19:34:52|    0|ADPWjsySIpmuOSL07...|  3.0|Just had Yalla fo...|     0|_soZ9DRjCF7Op7Us8...|
|VPqWLp9kMiZEbctCe...|   0|2018-09-25 03:22:50|    0|P320Yt8vFD3yjI34h...|  3.0|Overall is good, ...|     0|IMfkbLVt_GJfD7zJ9...|
|jdAHMkNHejuvOk9vE...|   0|2017-02-09 06:23:25|    0|ljjT3RaKYLWZOwdWB...|  3.0|Bummer that the p...|     1|njEa-gaTTxMueydgu...|
+--------------------+----+-------------------+-----+--------------------+-----+--------------------+------+--------------------+
only showing top 5 rows

下一篇:PySpark大数据分析(2):RDD编程

PySpark大数据分析(1):Spark的安装与文件读取相关推荐

  1. 【大数据分析】Spark的joins研究

    目录 概述 join的类型 Spark执行join的5种策略 各类join策略的优先级 概述 数据的join操作(数据连接)对于数据分析来说是非常重要的组成部分,不管是Spark Core还是Spar ...

  2. 颠覆大数据分析之Spark弹性分布式数据集

    Spark中迭代式机器学习算法的数据流可以通过图2.3来进行理解.将它和图2.1中Hadoop MR的迭代式机器学习的数据流比较一下.你会发现在Hadoop MR中每次迭代都会涉及HDFS的读写,而在 ...

  3. Spark大数据分析平台搭建

    1摘要 利用虚拟机实现Spark环境搭建,理解掌握大数据分析集群工作原理. 2题目解析 面对海量的各种来源的数据,如何对这些零散的数据进行有效的分析,得到有价值的信息一直是大数据领域研究的热点问题.大 ...

  4. python在大数据分析中的应用

    每个人都喜欢Python,如果您打算开始从事数据科学事业,我们可以肯定Python在您心中已经占有特殊的位置.它直观且易于在任何平台上运行,并且具有大量令人惊叹的库和工具.与其他编程语言相比,Pyth ...

  5. 大数据之spark详解

    目录 什么是spark: 功能历史上和hadoop的区别: spark的五大核心模块: ➢ Spark Core 什么是spark: 简单一点Spark 是一种基于内存的快速.通用.可扩展的大数据分析 ...

  6. 中国大数据分析行业研究报告

    下载报告去公众号:硬核刘大  后台回复" 大数据分析",即可下载完整PDF文件. 更多报告内容,可加微信:yw5201a1 领取.(ps:加过微信:chanpin628 的不要再加 ...

  7. Python大数据分析实战:豆瓣电影Top250中的最佳导演是谁?

    在之前写的一篇文中中,已经采用urllib和BeautifulSoup的方式抓取了豆瓣电影TOP250的导演.编剧.演员.上映时间和地区.语言.短评数.影评数.多少人想看.多少人看过等22个字段. 接 ...

  8. Ubuntu16.04安装Hadoop+Spark+pyspark大数据python开发环境

    一,安装jdk1.8.0.144 下载地址:www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648. ...

  9. 每周一书《Spark与Hadoop大数据分析》分享!

    Spark与Hadoop大数据分析比较系统地讲解了利用Hadoop和Spark及其生态系统里的一系列工具进行大数据分析的方法,既涵盖ApacheSpark和Hadoop的基础知识,又深入探讨所有Spa ...

最新文章

  1. jvm调优工具_JVM性能调优监控工具jps、jstack、jmap、jhat、hprof使用详解
  2. ubuntu开辟虚拟内存
  3. redis服务端基本命令
  4. js中深拷贝和浅拷贝问题
  5. RESTful API的理解
  6. runloop - 介绍
  7. 阿里云物联网平台远程配置功能JAVA 示例参考
  8. PHP(2):搭建PHP 运行环境中可能出现的问题及处理方法
  9. 聚类算法_案例实战:聚类实战
  10. 这个PHP无解深坑,你能解出来吗?(听说能解出来的都很秀)
  11. hdu 4599 Dice
  12. openwrt 需要高级浏览器_斐讯K2P刷openwrt设置mentohust
  13. mysql rownum写法_mysql类似oracle rownum写法
  14. 还在为JS闭包烦恼? FF带你一篇文章玩转闭包,某化腾听了都说好!!
  15. 4个网页翻译工具,一键就能将网页英文翻译成中文
  16. tensorflow最新版本与keras版本对应
  17. 图的遍历——深度优先搜索和广度(宽度)优先搜索(含例题)
  18. 第一次Java项目实训:GUI学生管理系统
  19. Linux开发者的CI/CD(8)静态代码检查工具cppcheck使用大全
  20. canvas绘制图片

热门文章

  1. 关于日志造成的频繁的IO
  2. 每次合上笔记本总是进入待机或休眠
  3. 降雨量(附我的SB调题过程)
  4. 闪聚支付 第3章-C扫B支付
  5. 数位云Android SDK接入指南
  6. Markdown编辑器模式使用LaTex编辑数学公式入门
  7. 网传阿里将裁两万人,其股价又大跌10个点,属实有些难了……
  8. 【数学之美】第三版推荐序二 摘录
  9. 舞台音效控制软件_苹果舞台现场演奏音效控制工具 MainStage 3 v3.3.1
  10. astash制作UML类图 简单入门教程