大规模数据处理实战
蔡元楠
硅谷资深工程师
41608 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
大规模数据处理实战
15
15
1.0x
00:00/00:00
登录|注册

18 | Word Count:从零开始运行你的第一个Spark应用

反馈操作效果
动手操作一次,解决实际问题
安装Spark、配置环境、Spark程序的基本结构
从零开始创建一个简单的Spark应用程序
使用groupBy和count统计词频
使用explode和split实现类似flatMap功能
使用SparkSession创建DataFrame
使用flatMap、map、reduceByKey实现统计词频
通过SparkContext对象读取输入文件,创建RDD
SparkContext作为Spark任务的入口
下载、解压缩、配置环境变量
可选安装Hadoop
确保安装Python
确保安装Java Developer Kit(JDK)
个人喜欢使用Mac OS X
不推荐使用Java和R
推荐使用Python
用RDD、DataFrame、Spark Streaming实现统计词频的方法
一个完整的Spark程序应该包含哪些东西
了解SparkContext、SparkSession
安装Spark及相关模块的方法
用RDD、DataFrame、Spark Streaming实现统计词频
安装Spark及相关模块
从零开始运行第一个Spark应用
学习Spark的流处理模块:Spark Streaming和Structured Streaming
学习Spark SQL的DataSet/DataFrame API
学习Spark基本数据结构RDD
实践题
小结
基于DataFrame API的Word Count程序
基于RDD API的Word Count程序
安装Spark
推荐的编程语言和操作系统
学习收获
今天的学习内容
Spark学习路径回顾
主题总结
作者:蔡元楠
标题:Word Count:从零开始运行你的第一个Spark应用
参考文章

该思维导图由 AI 生成,仅供参考

你好,我是蔡元楠。
今天我们来从零开始运行你的第一个 Spark 应用。
我们先来回顾一下模块三的学习路径。
首先,我们由浅入深地学习了 Spark 的基本数据结构 RDD,了解了它这样设计的原因,以及它所支持的 API。
之后,我们又学习了 Spark SQL 的 DataSet/DataFrame API,了解到它不仅提供类似于 SQL query 的接口,大大提高了开发者的工作效率,还集成了 Catalyst 优化器,可以提升程序的性能。
这些 API 应对的都是批处理的场景。
再之后,我们学习了 Spark 的流处理模块:Spark Streaming 和 Structured Streaming。两者都是基于微批处理(Micro batch processing)的思想,将流数据按时间间隔分割成小的数据块进行批处理,实时更新计算结果。
其中 Structured Streaming 也是使用 DataSet/DataFrame API,这套 API 在某种程度上统一了批处理和流处理,是当前 Spark 最流行的工具,我们必需要好好掌握。
虽然学习了这么多 API 以及它们的应用,但是大部分同学还没有从零开始写一个完整的 Spark 程序,可能更没有运行 Spark 程序的经历。纸上谈兵并不能帮助我们在工作生活中用 Spark 解决实际问题。所以,今天我就和你一起做个小练习,从在本地安装 Spark、配置环境开始,为你示范怎样一步步解决之前提到数次的统计词频(Word Count)的问题。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了如何从零开始运行第一个Spark应用,主要涵盖了安装Spark、配置环境以及基于RDD API的Word Count程序。作者首先介绍了Spark的学习路径,包括基本数据结构RDD、Spark SQL的DataSet/DataFrame API以及流处理模块。然后详细介绍了在本地安装Spark和PySpark的步骤,包括安装Java Developer Kit、Python以及预装Hadoop等。接着,作者讲解了Spark程序的入口,包括SparkContext和SparkSession的初始化方法,并且提出了推荐使用SparkSession作为Spark程序的入口。最后,作者通过示例代码演示了基于RDD API的Word Count程序的实现步骤,包括文本拆分和词频统计。整体而言,本文内容详实,适合初学者快速了解并运行第一个Spark应用。 文章还介绍了如何使用DataFrame API来实现Word Count程序,通过对DataFrame进行操作,避免了创建中间值的繁琐步骤,展示了使用DataSet/DataFrame API的便利性。最后,鼓励读者动手操作一次,以便真正掌握所学知识。整体而言,本文内容丰富,适合初学者快速入门Spark应用程序开发。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大规模数据处理实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(26)

  • 最新
  • 精选
  • 斯盖丸
    .groupBy("Value")这个value是什么意思?

    作者回复: SparkSession.read.text()读取文件后生成的DataFrame只有一列,它的默认名字就是“value”。我们用lines.value去读取这一列,是同样的道理。之后我们给新的列重命名为”word”,所以groupBy的参数变成了”word”。

    2019-05-29
    2
  • JustDoDT
    python 直接安装 pip install pyspark pip帮你搞定一切安装配置问题。 参考资料: https://pypi.org/project/pyspark/

    作者回复: 嗯,这位同学说的很好,用pip install安装pyspark确实方便。我介绍的方法比较普遍试用。

    2019-09-01
    2
    1
  • JustDoDT
    实践成功 demo.txt: I hava a dog He has a Dog RDD写法: [('I', 1), ('hava', 1), ('a', 2), ('dog', 1), ('He', 1), ('has', 1), ('Dog', 1)] [('a', 2), ('I', 1), ('hava', 1), ('dog', 1), ('He', 1), ('has', 1), ('Dog', 1)] DF写法: [Row(word='dog', count=1), Row(word='He', count=1), Row(word='Dog', count=1), Row(word='I', count=1), Row(word='a', count=2), Row(word='hava', count=1), Row(word='has', count=1)] [Row(word='a', count=2), Row(word='I', count=1), Row(word='Dog', count=1), Row(word='hava', count=1), Row(word='dog', count=1), Row(word='has', count=1), Row(word='He', count=1)] 从启动到出结果,DF写法速度要比rdd慢。

    作者回复: 👍🏻

    2019-09-02
  • Qi Liu 刘祺
    继续学习~

    作者回复: 加油⛽️

    2019-06-29
  • 朱同学
    java万金油,什么都可以干,人好招,特别是我们这种偏远地区,scala,虽然开发效率高,但是人少,难招,所以我们大数据团队选择了java。至于运行效率,py是最慢的,java和scala应该半斤八俩吧
    2019-05-29
    20
  • 科学Jia
    女同学看完2015年出的spark快速大数据分析这本书以后,再来看老师写的这些文字,觉得言简意赅,印象深刻,至于用什么语言倒无所谓了,主要是思路。后期希望老师能多说一些案例和处理中需要注意的技巧。
    2019-06-20
    2
    9
  • 看了这一讲意识到之前对Python欠缺了重视,现在明白Python在大数据处理领域是很有竞争力的,因为Spark和众多的库的原因,甚至超越Java,所以现在要重新重视起来Python的学习了
    2019-05-29
    7
  • hallo128
    【以下代码可以运行,但对df格式的操作是借助二楼的网址去找的,具体含义也不太清楚,只是可以运行出来】 #python前运行调用包 from pyspark.sql import SparkSession from pyspark.sql.functions import explode from pyspark.sql.functions import split #初始化SparkSession程序入口 spark = SparkSession.builder.appName("WordCount").getOrCreate() #读入文档 ds_lines = spark.read.text("/Users/apple/code_tool/spark/WordCount/demo.md") #针对df特定的计算格式 words = ds_lines.select( explode( split(ds_lines.value, " ") ).alias("word") ) #返回的RDD进行计数 wordCounts = words.groupBy("word").count() #展示 wordCounts.show() #关闭spark spark.stop()
    2019-06-08
    6
  • 9527
    spark_session = SparkSession.builder.appName("PySparkShell").getOrCreate() ds_lines = spark_session.read.textFile("README.md") ds = ds_lines.flatMap(lambda x: x.split(' ')).groupBy("Value").count() ds.show() 我执行这段的时候报错了 AttributeError: 'DataFrameReader' object has no attribute 'textFile' 如果把textFile()改成text()就对了 再执行flatMap那段,也报错了 AttributeError: 'DataFrame' object has no attribute 'flatMap' 是不是API变动了,我用的是2.4.3版本单机执行的
    2019-05-29
    1
    6
  • hallo128
    “虽然 Spark 还支持 Java 和 R,但是我个人不推荐你使用。用 Java 写程序实在有些冗长,而且速度上没有优势。” 推荐使用,还是应该详细说明对比下,不能只因为自己偏好某种工具给出建议。对于spark原生来说,速度和库同步更新更快的是Scala,如果你想随时用到spark最新功能库的话,就应该选择Scala,同时速度也是最快的。 至于Python,R,Java,一方面和你的熟悉程度有关,另一方面也与你到底准备用spark来做什么的目的有关。是集群控制,还是数据分析,还是建模,来选择合适的编程语言与spark进行连接编写。
    2019-06-08
    1
    4
收起评论
显示
设置
留言
26
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部