大规模数据处理实战
蔡元楠
Google Brain资深工程师
立即订阅
8443 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 从这里开始,带你走上硅谷一线系统架构师之路
免费
模块一 | 直通硅谷大规模数据处理技术 (3讲)
01 | 为什么MapReduce会被硅谷一线公司淘汰?
02 | MapReduce后谁主沉浮:怎样设计下一代数据处理技术?
03 | 大规模数据处理初体验:怎样实现大型电商热销榜?
模块二 | 实战学习大规模数据处理基本功 (8讲)
04 | 分布式系统(上):学会用服务等级协议SLA来评估你的系统
05 | 分布式系统(下):架构师不得不知的三大指标
06 | 如何区分批处理还是流处理?
07 | Workflow设计模式:让你在大规模数据世界中君临天下
08 | 发布/订阅模式:流处理架构中的瑞士军刀
09 | CAP定理:三选二,架构师必须学会的取舍
10 | Lambda架构:Twitter亿级实时数据分析架构背后的倚天剑
11 | Kappa架构:利用Kafka锻造的屠龙刀
模块三 | 抽丝剥茧剖析Apache Spark设计精髓 (10讲)
12 | 我们为什么需要Spark?
13 | 弹性分布式数据集:Spark大厦的地基(上)
14 | 弹性分布式数据集:Spark大厦的地基(下)
15 | Spark SQL:Spark数据查询的利器
16 | Spark Streaming:Spark的实时流计算API
17 | Structured Streaming:如何用DataFrame API进行实时数据分析?
18 | Word Count:从零开始运行你的第一个Spark应用
19 | 综合案例实战:处理加州房屋信息,构建线性回归模型
20 | 流处理案例实战:分析纽约市出租车载客信息
21 | 深入对比Spark与Flink:帮你系统设计两开花
模块四 | Apache Beam为何能一统江湖 (8讲)
22 | Apache Beam的前世今生
23 | 站在Google的肩膀上学习Beam编程模型
24 | PCollection:为什么Beam要如此抽象封装数据?
25 | Transform:Beam数据转换操作的抽象方法
26 | Pipeline:Beam如何抽象多步骤的数据流水线?
27 | Pipeline I/O: Beam数据中转的设计模式
28 | 如何设计创建好一个Beam Pipeline?
29 | 如何测试Beam Pipeline?
模块五 | 决战 Apache Beam 真实硅谷案例 (7讲)
30 | Apache Beam实战冲刺:Beam如何run everywhere?
31 | WordCount Beam Pipeline实战
32 | Beam Window:打通流处理的任督二脉
33 | 横看成岭侧成峰:再战Streaming WordCount
34 | Amazon热销榜Beam Pipeline实战
35 | Facebook游戏实时流处理Beam Pipeline实战(上)
36 | Facebook游戏实时流处理Beam Pipeline实战(下)
模块六 | 大规模数据处理的挑战与未来 (4讲)
37 | 5G时代,如何处理超大规模物联网数据
38 | 大规模数据处理在深度学习中如何应用?
39 | 从SQL到Streaming SQL:突破静态数据查询的次元
40 | 大规模数据处理未来之路
专栏加餐 | 特别福利 (4讲)
FAQ第一期 | 学习大规模数据处理需要什么基础?
加油站 | Practice makes perfect!
FAQ第二期 | Spark案例实战答疑
FAQ第三期 | Apache Beam基础答疑
结束语 (1讲)
结束语 | 世间所有的相遇,都是久别重逢
大规模数据处理实战
登录|注册

19 | 综合案例实战:处理加州房屋信息,构建线性回归模型

蔡元楠 2019-05-31
你好,我是蔡元楠。
今天我要与你分享的主题是“综合案例实战:处理加州房屋信息,构建线性回归模型”。
通过之前的学习,我们对 Spark 各种 API 的基本用法有了一定的了解,还通过统计词频的实例掌握了如何从零开始写一个 Spark 程序。那么现在,让我们从一个真实的数据集出发,看看如何用 Spark 解决实际问题。

数据集介绍

为了完成今天的综合案例实战,我使用的是美国加州 1990 年房屋普查的数据集。
数据集中的每一个数据都代表着一块区域内房屋和人口的基本信息,总共包括 9 项:
该地区中心的纬度(latitude)
该地区中心的经度(longitude)
区域内所有房屋屋龄的中位数(housingMedianAge)
区域内总房间数(totalRooms)
区域内总卧室数(totalBedrooms)
区域内总人口数(population)
区域内总家庭数(households)
区域内人均收入中位数(medianIncome)
该区域房价的中位数(medianHouseValue)
也就是说,我们可以把每一个数据看作一个地区,它含有 9 项我们关心的信息,也就是上面提到的 9 个指标。比如下面这个数据:
-122.230000,37.880000,41.000000,880.000000,129.000000,322.000000,126.000000,8.325200,452600.000000'
这个数据代表该地区的经纬度是(-122.230000,37.880000),这个地区房屋历史的中位数是 41 年,所有房屋总共有 880 个房间,其中有 129 个卧室。这个地区内共有 126 个家庭和 322 位居民,人均收入中位数是 8.3252 万,房价中位数是 45.26 万。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《大规模数据处理实战》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(13)

  • coder
    老师的代码可以po到Github上,这样大家都可以学习了🌝🌝🌝
    2019-05-31
    11
  • kylin
    请问为什么不用dateset进行数据处理而是用dateFrame?

    作者回复: PySpark的SQL库只有DataFrame,并没有DataSet。不过在Scala和Java中,DataSet已经成为了统一的SQL入口。

    2019-06-01
    1
    6
  • ttttt
    终于跑通了,不容易啊,刚开始数据集没下载正确。有空值,老师给的数据集较干净。
    别的数据集,要记得去除空值。
    下面是实践代码jupyter
    https://github.com/LearningChanging/spark-exercise/blob/master/19/CaliforniaHousing.ipynb

    作者回复: 给你点赞👍加油

    2019-09-02
    2
  • hufox
    最后一句的代码改成 predictionAndLabel[:2] ,可以了!
    2019-06-16
    2
    2
  • henry
    最后一步,“模型预测的结果有些偏小”,这一点,从结果上看,不是应该预测的结果要大一些吗?
    2019-09-18
    1
  • 黄智寿
    老师,你好,数据集的下载地址能发一下吗?
    2019-08-13
    1
  • hufox
    在执行最后一句代码predictionAndLabel.take(2)时报错:
    AttributeError Traceback (most recent call last)
    <ipython-input-35-0700ca2381fb> in <module>
    ----> 1 predictionAndLabel.take(2)

    AttributeError: 'list' object has no attribute 'take'
    2019-06-16
    2
    1
  • gotojeff
    dataset不支持python, 所以在python里只有DF,这算不算python的一大劣势?scala是更好的选择?

    作者回复: 感谢提问。PySpark现在不支持DataSet,只有Scala和Java支持。这是由语言特性决定的,Python是动态类型的语言,而DataSet是强类型的,要求在编译时检测类型安全。所以,在所有用Python的代码例子中,我用的都是DataFrame。

    大部分人都同意在Spark中,Scala和Python是优于Java和R的。至于在Spark生态中,Scala和Python孰优孰劣,这是个很主观的问题,我们不能只因为不支持DataSet这一点就说Python比Scala差。

    Scala确实很优秀,Spark原生的实现就是用Scala写的,所以任何新发布的功能肯定支持Scala,官方文档也都是用Scala来举例子。而且Scala的性能要优于Python。但是Python也有很多优点,比如容易学习、应用场景广。这两种语言在Spark的世界中都可以满足我们绝大多数的需求,选择任何一个都不是错误的。

    2019-06-05
    1
    1
  • yopai
    老师代码可以上github吗,这样同学们可以参考下
    2019-06-03
    1
  • Zoe
    看前两篇文章时还在想,没什么练手的机会啊,今天就推送了实战练习,有一种终于跟上大神思维的幻觉,开心!

    作者回复: 👍

    2019-05-31
    1
  • ttttt
    StandardScaler 归一化之后,两列变成 NaN 了搞不明白
    +-----+--------------------+--------------------+
    |label| features| features_scaled|
    +-----+--------------------+--------------------+
    |4.526|[129.0,322.0,126....|[NaN,0.2843362208...|
    |3.585|[1106.0,2401.0,11...|[NaN,2.1201592122...|
    +-----+--------------------+--------------------+

    scaled_df.take(2)
    [Row(label=4.526, features=DenseVector([129.0, 322.0, 126.0, 8.3252, 6.9841, 2.5556, 0.1466]), features_scaled=DenseVector([nan, 0.2843, 0.3296, 4.3821, 2.8228, 0.2461, nan])),
     Row(label=3.585, features=DenseVector([1106.0, 2401.0, 1138.0, 8.3014, 6.2381, 2.1098, 0.1558]), features_scaled=DenseVector([nan, 2.1202, 2.9765, 4.3696, 2.5213, 0.2031, nan]))]
    2019-09-02
    1
  • 西北偏北
    一些实际的大数据处理,确实需要数学啊……怎么才能把数学学好?

    作者回复: 在实践中看到需要可以回头看一下基础知识

    2019-08-05
  • 毛毛
    老师,建议在案例讲解时对用到的算法大概解释下,比如srandscaler,这不是太清楚什么用处?谢谢
    2019-06-23
收起评论
13
返回
顶部