大数据技术入门

大数据技术入门 pdf epub mobi txt 电子书 下载 2025

杨正洪 著
图书标签:
  • 大数据
  • 数据分析
  • 数据挖掘
  • Hadoop
  • Spark
  • 数据仓库
  • 云计算
  • Python
  • 机器学习
  • 数据可视化
想要找书就要到 新城书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 清华大学出版社
ISBN:9787302442837
版次:1
商品编码:11956981
包装:平装
开本:16开
出版时间:2016-07-01
用纸:胶版纸
页数:292
字数:486000

具体描述

产品特色

编辑推荐

  本书作者杨正洪是国内知名大数据专家,是华中科技大学和中国地质大学客座教授,拥有国家专利,是湖北省2013年海外引进的科技人才,受武汉市政府邀请,成立武汉市云升科技发展有限公司,在浙江和上海分别有全资子公司,在美国硅谷设有研发中心。作者在与地方政府、证券金融公司的项目合作中发现,他们对大数据技术很感兴趣,并希望从大数据技术、大数据采集、管理、分析以及可视化等方面得到指导和应用帮助。因此编写了这本大数据技术的快速入门书。
  本书以Hadoop和Spark框架为线索,比较全面地介绍了Hadoop技术、Spark技术、大数据存储、大数据访问、大数据采集、大数据管理、大数据分析等内容。最后还给出两个案例:环保大数据和公安大数据,供读者参考。

内容简介

  从2015年开始,国内大数据市场继续保持高速的发展态势,作者在与地方政府、证券金融公司的项目合作中发现,他们对大数据技术很感兴趣,并希望从大数据技术、大数据采集、管理、分析以及可视化等方面得到指导和应用帮助。因此编写了这本大数据技术的快速入门书。
  本书共12章,以Hadoop和Spark框架为线索,比较全面地介绍了Hadoop技术、Spark技术、大数据存储、大数据访问、大数据采集、大数据管理、大数据分析等内容。最后还给出两个案例:环保大数据和公安大数据,供读者参考。
  本书适合大数据技术初学者,政府、金融机构的大数据应用决策和技术人员,IT经理,CTO,CIO等快速学习大数据技术。本书也可以作为高等院校和培训学校相关专业的培训教材。

作者简介

  杨正洪,是国内知名大数据专家,毕业于美国State University of New York at Stony Brook,在IBM公司从事大数据相关研发工作12年多。从2003~2013年,杨正洪在美国加州的IBM硅谷实验室(IBM Silicon Valley Lab)负责IBM大数据平台的设计、研发和实施,主持了保险行业、金融行业、政府行业的大数据系统的架构设计和实施。
  杨正洪是华中科技大学和中国地质大学客座教授,拥有国家专利,是湖北省2013年海外引进人才。受武汉市政府邀请,杨正洪于2012年12月发起成立武汉市云升科技发展有限公司,并获得东湖高新技术开发区办公场所和资金支持。目前公司在浙江和上海分别有全资子公司,在美国硅谷设有研发中心。公司的核心产品是大数据管理平台EasyDoop,并以EasyDoop为基础研发了公安大数据产品和环保大数据产品。这些产品在公安和环保行业得到成功实施,三次被中央电视台新闻联播节目播报,省部长级政府领导亲自考察,并给予了很高的评价。
  杨正洪参与了多项大数据相关标准的制定工作,曾受邀参与了公安部主导的“信息安全技术-大数据平台安全管理产品安全技术要求”的国家标准制定。

目录

第1章 大数据时代 1
1.1 什么是大数据 1
1.2 大数据的四大特征 2
1.3 大数据的商用化 3
1.4 大数据分析 5
1.5 大数据与云计算的关系 5
1.6 大数据的国家战略 6
1.6.1 政府大数据的价值 7
1.6.2 政府大数据的应用场景 8
1.7 企业如何迎接大数据 8
1.7.1 评估大数据方案的维度 9
1.7.2 业务价值维度 10
1.7.3 数据维度 11
1.7.4 现有IT环境和成本维度 12
1.7.5 数据治理维度 13
1.8 大数据产业链分析 14
1.8.1 技术分析 14
1.8.2 角色分析 15
1.8.3 大数据运营 17
1.9 大数据交易 18
1.10 大数据之我见 19
第2章 大数据软件框架 20
2.1 Hadoop框架 20
2.1.1 HDFS(分布式文件系统) 21
2.1.2 MapReduce(分布式计算框架) 22
2.1.3 YARN(集群资源管理器) 25
2.1.4 Zookeeper(分布式协作服务) 28
2.1.5 Ambari(管理工具) 29
2.2 Spark(内存计算框架) 29
2.2.1 Scala 31
2.2.2 Spark SQL 32
2.2.3 Spark Streaming 33
2.3 实时流处理框架 34
2.4 框架的选择 35
第3章 安装与配置大数据软件 36
3.1 Hadoop发行版 36
3.1.1 Cloudera 36
3.1.2 HortonWorks 37
3.1.3 MapR 38
3.2 安装Hadoop前的准备工作 39
3.2.1 Linux主机配置 40
3.2.2 配置Java环境 41
3.2.3 安装NTP和python 42
3.2.4 安装和配置openssl 43
3.2.5 启动和停止特定服务 44
3.2.6 配置SSH无密码访问 44
3.3 安装Ambari 和 HDP 45
3.3.1 配置安装包文件 45
3.3.2 安装 Ambari 46
3.3.3 安装和配置HDP 47
3.4 初识Hadoop 49
3.4.1 启动和停止服务 50
3.4.2 使用HDFS 51
3.5 Hadoop的特性 52
第4章 大数据存储:文件系统 53
4.1 HDFS shell命令 53
4.2 HDFS配置文件 55
4.3 HDFS API编程 57
4.3.1 读取HDFS文件内容 57
4.3.2 写HDFS文件内容 60
4.4 HDFS API总结 62
4.4.1 Configuration类 62
4.4.2 FileSystem抽象类 62
4.4.3 Path类 63
4.4.4 FSDataInputStream类 63
4.4.5 FSDataOutputStream类 63
4.4.6 IOUtils类 63
4.4.7 FileStatus类 64
4.4.8 FsShell类 64
4.4.9 ChecksumFileSystem抽象类 64
4.4.10 其他HDFS API实例 64
4.4.11 综合实例 67
4.5 HDFS文件格式 69
4.5.1 SequenceFile 70
4.5.2 TextFile(文本格式) 70
4.5.3 RCFile 70
4.5.4 Avro 72
第5章 大数据存储:数据库 73
5.1 NoSQL 73
5.2 HBase管理 74
5.2.1 HBase表结构 75
5.2.2 HBase系统架构 78
5.2.3 启动并操作HBase数据库 80
5.2.4 HBase Shell工具 82
5.3 HBase编程 86
5.3.1 增删改查API 86
5.3.2 过滤器 90
5.3.3 计数器 93
5.3.4 原子操作 94
5.3.5 管理API 94
5.4 其他NoSQL数据库 95
第6章 大数据访问:SQL引擎层 97
6.1 Phoenix 97
6.1.1 安装和配置Phoenix 98
6.1.2 在eclipse上开发phoenix程序 104
6.1.3 Phoenix SQL工具 108
6.1.4 Phoenix SQL 语法 109
6.2 Hive 111
6.2.1 Hive架构 111
6.2.2 安装Hive 112
6.2.3 Hive和MySQL的配置 114
6.2.4 Hive CLI 115
6.2.5 Hive数据类型 115
6.2.6 HiveQL DDL 119
6.2.7 HiveQL DML 121
6.2.8 Hive编程 123
6.2.9 HBase集成 125
6.2.10 XML和JSON数据 127
6.2.11 使用Tez 128
6.3 Pig 130
6.3.1 Pig语法 131
6.3.2 Pig和Hive的使用场景比较 134
6.4 ElasticSearch(全文搜索引擎) 136
6.4.1 全文索引的基础知识 136
6.4.2 安装和配置ES 138
6.4.3 ES API 140
第7章 大数据采集和导入 143
7.1 Flume 145
7.1.1 Flume架构 145
7.1.2 Flume事件 146
7.1.3 Flume源 147
7.1.4 Flume拦截器(Interceptor) 148
7.1.5 Flume通道选择器(Channel Selector) 149
7.1.6 Flume通道 150
7.1.7 Flume接收器 151
7.1.8 负载均衡和单点失败 153
7.1.9 Flume监控管理 153
7.1.10 Flume实例 154
7.2 Kafka 155
7.2.1 Kafka架构 156
7.2.2 Kafka与JMS的异同 158
7.2.3 Kafka性能考虑 158
7.2.4 消息传送机制 159
7.2.5 Kafka和Flume的比较 159
7.3 Sqoop 160
7.3.1 从数据库导入HDFS 160
7.3.2 增量导入 163
7.3.3 将数据从Oracle导入Hive 163
7.3.4 将数据从Oracle导入HBase 164
7.3.5 导入所有表 165
7.3.6 从HDFS导出数据 165
7.3.7 数据验证 165
7.3.8 其他Sqoop功能 165
7.4 Storm 167
7.4.1 Storm基本概念 168
7.4.2 spout 169
7.4.3 bolt 171
7.4.4 拓扑 173
7.4.5 Storm总结 175
7.5 Splunk 175
第8章 大数据管理平台 177
8.1 大数据建设总体架构 177
8.2 大数据管理平台的必要性 178
8.3 大数据管理平台的功能 179
8.3.1 推进数据资源全面整合共享 179
8.3.2 增强数据管理水平 180
8.3.3 支撑创新大数据分析 180
8.4 数据管理平台(DMP) 180
8.5 EasyDoop案例分析 182
8.5.1 大数据建模平台 183
8.5.2 大数据交换和共享平台 184
8.5.3 大数据云平台 185
8.5.4 大数据服务平台 186
8.5.5 EasyDoop平台技术原理分析 188
第9章 Spark技术 192
9.1 Spark框架 192
9.1.1 安装Spark 193
9.1.2 配置Spark 194
9.2 Spark Shell 195
9.3 Spark编程 198
9.3.1 编写Spark API程序 198
9.3.2 使用sbt编译并打成jar包 199
9.3.3 运行程序 200
9.4 RDD 200
9.4.1 RDD算子和RDD依赖关系 201
9.4.2 RDD转换操作 203
9.4.3 RDD行动(Action)操作 204
9.4.4 RDD控制操作 205
9.4.5 RDD实例 205
9.5 Spark SQL 208
9.5.1 DataFrame 209
9.5.2 RDD转化为DataFrame 213
9.5.3 JDBC数据源 215
9.5.4 Hive数据源 216
9.6 Spark Streaming 217
9.6.1 DStream编程模型 218
9.6.2 DStream操作 221
9.6.3 性能考虑 223
9.6.4 容错能力 224
9.7 GraphX图计算框架 224
9.7.1 属性图 226
9.7.2 图操作符 228
9.7.3 属性操作 231
9.7.4 结构操作 231
9.7.5 关联(join)操作 233
9.7.6 聚合操作 234
9.7.7 计算度信息 235
9.7.8 缓存操作 236
9.7.9 图算法 236
第10章 大数据分析 238
10.1 数据科学 239
10.1.1 探索性数据分析 240
10.1.2 描述统计 241
10.1.3 数据可视化 241
10.2 预测分析 244
10.2.1 预测分析实例 244
10.2.2 回归(Regression)分析预测法 246
10.3 机器学习 247
10.3.1 机器学习的市场动态 248
10.3.2 机器学习分类 249
10.3.3 机器学习算法 251
10.4 Spark MLib 252
10.4.1 MLib架构 253
10.4.2 MLib算法库 253
10.4.3 决策树 257
10.5 深入了解算法 261
10.5.1 分类算法 262
10.5.2 预测算法 263
10.5.3 聚类分析 263
10.5.4 关联分析 264
10.5.5 异常值分析算法 266
10.5.6 协同过滤(推荐引擎)算法 267
10.6 Mahout简介 267
第11章 案例分析:环保大数据 268
11.1 环保大数据管理平台 268
11.2 环保大数据应用平台 269
11.2.1 环境自动监测监控服务 270
11.2.2 综合查询服务 272
11.2.3 统计分析服务 272
11.2.4 GIS服务 274
11.2.5 视频服务 274
11.2.6 预警服务 275
11.2.7 应急服务 276
11.2.8 电子政务服务 277
11.2.9 智能化运营管理系统 279
11.2.10 环保移动应用系统 279
11.2.11 空气质量发布系统 280
11.3 环保大数据分析系统 280
第12章 案例分析:公安大数据 281
12.1 总体架构设计 281
12.2 建设内容 282
12.3 建设步骤 284
附录 1 数据量的单位级别 285
附录 2 Linux Shell常见命令 286
附录 3 Ganglia(分布式监控系统) 289
附录 4 auth-ssh脚本 290
附录 5 作者简介 292


精彩书摘

  第 9 章 Spark技术
  Apache Spark 是一个新兴的大数据处理通用引擎,提供了分布式的内存抽象。Spark最大的特点就是快(Lightning-Fast),可比 Hadoop MapReduce 的处理速度快 100 倍。此外,Spark 提供了简单易用的 API,几行代码就能实现 WordCount。本章介绍Spark 的框架,Spark Shell 、RDD、Spark SQL、Spark Streaming 等的基本使用。
  9.1 Spark框架
  Spark作为新一代大数据快速处理平台,集成了大数据相关的各种能力。Hadoop的中间数据需要存储在硬盘上,这产生了较高的延迟。而Spark基于内存计算,解决了这个延迟的速度问题。Spark本身可以直接读写Hadoop上任何格式数据,这使得批处理更加快速。
  图9-1是以Spark为核心的大数据处理框架。最底层为大数据存储系统,如:HDFS、HBase等。在存储系统上面是Spark集群模式(也可以认为是资源管理层),这包括Spark自带的独立部署模式、YARN和Mesos集群资源管理模式,也可以是Amazon EC2。Spark内核之上是为应用提供各类服务的组件。Spark内核API支持Java、Python、Scala等编程语言。Spark Streaming提供高可靠性、高吞吐量的实时流式处理服务,能够满足实时系统要求;MLib提供机器学习服务,Spark SQL提供了性能比Hive快了很多倍的SQL查询服务,GraphX提供图计算服务。
  图9-1 Spark 框架
  从上图看出,Spark有效集成了Hadoop组件,可以基于Hadoop YARN作为资源管理框架,并从HDFS和HBase数据源上读取数据。YARN是Spark目前主要使用的资源管理器。Hadoop能做的,Spark基本都能做,而且做的比Hadoop好。Spark依然是Hadoop生态圈的一员,它替换的主要是MR的计算模型而已。资源调度依赖于YARN,存储则依赖于HDFS。
  Spark的大数据处理平台是建立在统一抽象的RDD之上。RDD是弹性分布式数据集(Resilient Distributed Dataset)的英文简称,它是一种特殊数据集合,支持多种来源,有容错机制,可以被缓存,支持并行操作。Spark的一切都是基于RDD的。RDD就是Spark输入的数据。
  Spark应用程序在集群上以独立进程集合的形式运行。如图9-2所示,主程序(叫做Driver程序)中的SparkContext对象协调Spark应用程序。SparkContext对象首先连接到多种集群管理器(如:YARN),然后在集群节点上获得Executor。SparkContext把应用代码发给Executor,Executor负责应用程序的计算和数据存储。
  图9-2 集群模式
  每个应用程序都拥有自己的Executor。Executor为应用程序提供了一个隔离的运行环境,以Task的形式执行作业。对于Spark Shell来说,这个Driver就是与用户交互的进程。
  9.1.1 安装Spark
  最新的Spark版本是1.6.1。它可以运行在Windows或Linux机器上。运行 Spark 需要 Java JDK 1.7,CentOS 6.x 系统默认只安装了 Java JRE,还需要安装 Java JDK,并确保配置好 JAVA_HOME、PATH和CLASSPATH变量。此外,Spark 会用到 HDFS 与 YARN,因此读者要先安装好 Hadoop。我们可以从Spark官方网站http://spark.apache.org/downloads.html上下载Spark,如图9-3所示。
  图9-3 下载安装包
  有几种Package type,分别为:
  l Source code:Spark 源码,需要编译才能使用。
  l Pre-build with user-provided Hadoop:“Hadoop free”版,可应用到任意 Hadoop 版本。
  l Pre-build for Hadoop 2.6 and later:基于 Hadoop 2.6 的预编译版,需要与本机安装的 Hadoop 版本对应。可选的还有 Hadoop 2.4 and later、Hadoop 2.3、Hadoop 1.x,以及 CDH 4。
  本书选择的是 Pre-build with user-provided Hadoop,简单配置后可应用到任意 Hadoop 版本。下载后,执行如下命令进行安装:
  sudo tar -zxf spark-1.6.1-bin-without-hadoop.tgz -C /usr/local/
  cd /usr/local
  sudo mv ./spark-1.6.1-bin-without-hadoop/ ./spark
  sudo chown -R hadoop:hadoop ./spark
  9.1.2 配置Spark
  安装后,进入conf目录,以spark-env.sh.template文件为模块创建spark-env.sh文件,然后修改其配置信息,命令如下:
  cd /usr/local/spark
  cp ./conf/spark-env.sh.template ./conf/spark-env.sh
  编辑 ./conf/spark-env.sh(vim ./conf/spark-env.sh),在文件的最后加上如下一行:
  export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)
  保存后,Spark 就可以启动和运行了。在 ./examples/src/main 目录下有一些 Spark 的示例程序,有 Scala、Java、Python、R 等语言的版本。我们可以先运行一个示例程序 SparkPi(即计算 π 的近似值),执行如下命令:
  cd /usr/local/spark
  ./bin/run-example SparkPi
  执行时会输出非常多的运行信息,输出结果不容易找到,可以通过 grep 命令进行过滤(命令中的 2>&1 可以将所有的信息都输出到 stdout 中):
  ./bin/run-example SparkPi 2>&1 | grep "Pi is roughly"
  过滤后的运行结果为 π 的 5 位小数近似值 。
  9.2 Spark Shell
  以前的统计和机器学习依赖于数据抽样。从统计的角度来看,抽样如果足够随机,其实可以很精准地反应全集的结果,但事实上往往很难做到随机,所以通常做出来也会不准。现在大数据解决了这个问题,它不是通过优化抽样的随机来解决,而是通过全量数据来解决。要解决全量的数据就需要有强大的处理能力,Spark首先具备强大的处理能力,其次Spark Shell带来了即席查询。做算法的工程师,以前经常是在小数据集上跑个单机,然后看效果不错,一到全量上,就可能和单机效果很不一样。有了Spark后就不一样了,尤其是有了Spark Shell。可以边写代码,边运行,边看结果。Spark提供了很多的算法,最常用的是贝叶斯、word2vec、线性回归等。作为算法工程师,或者大数据分析师,一定要学会用Spark Shell。
  Spark Shell 提供了简单的方式来学习 Spark API,也提供了交互的方式来分析数据。Spark Shell 支持 Scala 和 Python,本书选择使用 Scala 来进行介绍。Scala集成了面向对象和函数语言的特性,并运行于Java 虚拟机之上,兼容现有的 Java 程序。Scala 是 Spark 的主要编程语言,如果仅仅是写 Spark 应用,并非一定要用 Scala,用Java和Python都是可以的。使用 Scala 的优势是开发效率更高,代码更精简,并且可以通过 Spark Shell 进行交互式实时查询,方便排查问题。执行如下命令启动 Spark Shell:
  ./bin/spark-shell
  启动成功后会有“scala >”的命令提示符。这表明已经成功启动了Spark Shell。在 Spark Shell 启动时,输出日志的最后有这么几条信息:
  16/04/16 17:25:47 INFO repl.SparkILoop: Created spark context..
  Spark context available as sc.
  这些信息表明 SparkContext已经初始化好了,可通过对应的sc变量直接进行访问。Spark 的主要抽象是分布式的数据集合RDD,它可被分发到集群各个节点上,进行并行操作。一个RDD可以通过 Hadoop InputFormats 创建(如 HDFS),或者从其他 RDDs转化而来。下面我们从 ./README 文件新建一个 RDD,代码如下:
  scala>val textFile = sc.textFile("file:///usr/local/spark/README.md")
  上述的sc是Spark创建的SparkContext,我们使用SparkContext对象加载本地文件README.md来创建RDD。输出结果如下:
  textFile: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[1] at textFile at :27
  上述返回结果为一个MapPartitionsRDD文件。需要说明的是,加载HDFS文件和本地文件都是使用textFile ,区别在于前缀“hdfs://”为HDFS文件,而“file:// ”为本地文件。上述代码中通过“file://”前缀指定读取本地文件,直接返回MapPartitionsRDD。Spark Shell默认方式是读取HDFS中的文件。从HDFS读取的文件先转换为HadoopRDD,然后隐式转换成MapPartitionsRDD。
  上面的例子使用Spark中的文本文件README.md创建一个RDD textFile,文件中包含了若干文本行。将该文本文件读入RDD textFile时,其中的文本行将被分区,以便能够分发到集群中并行化操作。我们可以想象,RDD有多个分区,每个分区上有多行的文本内容。RDDs 支持两种类型的操作:
  l actions:在数据集上运行计算后返回结果值。
  l transformations:转换。从现有RDD创建一个新的RDD。
  下面我们演示count()和first()操作:
  scala>textFile.count() // RDD 中的 item 数量,对于文本文件,就是总行数
  输出结果为:
  res0: Long = 95
  scala>textFile.first() // RDD 中的第一个 item,对于文本文件,就是第一行内容
  输出结果为:
  res1: String = # Apache Spark
  上面这两个例子都是action的例子。接着演示 transformation,通过 filter transformation来筛选出包含 Spark 的行,返回一个新的RDD,代码如下:
  scala>val linesWithSpark = textFile.filter(line => line.contains("Spark"))
  scala>linesWithSpark.count() // 统计行数
  上面的linesWithSpark RDD有多个分区,每个分区上只有包含了Spark的若干文本行。输出结果为:
  res4: Long = 17
  上述结果表明一共有17行内容包含“Spark”,这与通过 Linux 命令 cat ./README.md | grep "Spark" -c 得到的结果一致,说明是正确的。action 和 transformation 可以用链式操作的方式结合使用,使代码更为简洁:
  scala>textFile.filter(line => line.contains("Spark")).count() // 统计包含 Spark 的行数
  RDD的actions和transformations可用在更复杂的计算中。例如,通过如下代码可以找到包含单词最多的那一行内容共有几个单词:
  scala>textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
  输出结果为:
  res5: Int = 14
  上述代码将每一行文本内容使用split进行分词,并统计分词后的单词数。将每一行内容map为一个整数,这将创建一个新的 RDD,并在这个 RDD 中执行reduce操作,找到最大的数。map()、reduce()中的参数是Scala的函数字面量(function literals),并且可以使用Scala/Java的库。例如,通过使用 Math.max() 函数(需要导入Java的Math库),可以使上述代码更容易理解:
  scala>import java.lang.Math
  scala>textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))
  词频统计(WordCount)是Hadoop MapReduce的入门程序,Spark可以更容易地实现。首先结合flatMap、map和reduceKey来计算文件中每个单词的词频:
  scala>val wordCounts = textFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey((a, b) => a + b)
  输出结果为(string,int)类型的键值对ShuffledRDD。这是因为reduceByKey操作需要进行Shuffle操作,返回的是一个Shuffle形式的ShuffleRDD:
  wordCounts: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[4] at reduceByKey at :29
  然后使用collect聚合单词计算结果:
  scala>wordCounts.collect()
  输出结果为:
  res7: Array[(String, Int)] = Array((package,1), (For,2), (Programs,1), (processing,1), (Because,1), (The,1)...)
  Spark 支持将数据缓存在集群的内存缓存中,当数据需要反复访问时这个特征非常有用。调用 cache(),就可以将数据集进行缓存:
  scala>textFilter.cache()
  9.3 Spark编程
  无论Windows或Linux操作系统,都是基于Eclipse或Idea构建开发环境,通过Java、Scala或Python语言进行开发。根据开发语言的不同,我们需要预先准备好JDK、Scala或Python环境,然后在Eclipse中下载安装Scala或Python插件。
  下面我们通过一个简单的应用程序 SimpleApp 来演示如何通过 Spark API 编写一个独立应用程序。不同于使用Spark Shell自动初始化的SparkContext,独立应用程序需要自己初始化一个SparkContext,将一个包含应用程序信息的SparkConf对象传递给SparkContext构造函数。对于独立应用程序,使用 Scala 编写的程序需要使用 sbt 进行编译打包,相应地,Java 程序使用 Maven 编译打包,而 Python 程序通过 spark-submit 直接提交。
  在终端中执行如下命令,创建一个文件夹 sparkapp 作为应用程序根目录:
  cd ~ # 进入用户主文件夹
  mkdir ./sparkapp # 创建应用程序根目录
  mkdir -p ./sparkapp/src/main/scala # 创建所需的文件夹结构
  9.3.1 编写Spark API程序
  在./sparkapp/src/main/scala下建立一个名为SimpleApp.scala 的文件(vim ./sparkapp/src/main/scala/SimpleApp.scala),添加代码如下:
  /* SimpleApp.scala */
  import org.apache.spark.SparkContext
  import org.apache.spark.SparkContext._
  import org.apache.spark.SparkConf
  object SimpleApp {
  //使用关键字def声明函数,必须为函数指定参数类型
  def main(args: Array[String]) {
  val logFile = "file:///usr/local/spark/README.md" // 一个本地文件
  //创建SparkConf对象,该对象包含应用程序的信息
  val conf = new SparkConf().setAppName("Simple Application")
  //创建SparkContext对象,该对象可以访问Spark集群
  val sc = new SparkContext(conf)
  val logData = sc.textFile(logFile, 2).cache()
  //line=>line.contains(..)是匿名函数的定义,line是参数
  val numAs = logData.filter(line => line.contains("a")).count()
  val numBs = logData.filter(line => line.contains("b")).count()
  println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
  }
  }
  上述程序计算 /usr/local/spark/README 文件中包含 “a” 的行数和包含 “b” 的行数。不同于 Spark Shell,独立应用程序需要通过“val sc = new SparkContext(conf)”初始化 SparkContext,SparkContext 的参数 SparkConf 包含了应用程序的信息。
  9.3.2 使用sbt编译并打成jar包
  该程序依赖 Spark API,因此我们需要通过sbt(或mvn)进行编译打包。我们以sbt为例,创建一个包含应用程序代码的jar包。在 ./sparkapp 中新建文件 simple.sbt(vim ./sparkapp/simple.sbt),添加如下内容,声明该独立应用程序的信息以及与 Spark 的依赖关系:
  name := "Simple Project"
  version := "1.0"
  scalaVersion := "2.10.5"
  libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1"
  文件 simple.sbt 需要指明Spark和Scala的版本。上述版本信息可以从Spark Shell获得。我们启动Spark Shell的过程中,当输出到 Spark 的符号图形时,可以看到相关的版本信息。
  Spark中没有自带sbt,需要手动安装sbt,我们选择安装在/usr/local/sbt中:
  ……

前言/序言

  我们生活在大数据时代,正以前所未有的速度和规模产生数据。数据资产正成为和土地、资本、人力并驾齐驱的关键生产要素,并在社会、经济、科学研究等方面颠覆人们探索世界的方法、驱动产业间的融合与分立。
  大数据是用来描述数据规模巨大、数据类型复杂的数据集,它本身蕴含着丰富的价值。比如:在金融行业,企业和个人的一些信用记录、消费记录、客户点击数据集、客户刷卡、存取款、电子银行转账、微信评论等行为数据组合为金融大数据,他们利用大数据技术为财富客户推荐产品,利用客户行为数据设计满足客户需求的金融产品,利用金融行业全局数据了解业务运营薄弱点并加快内部数据处理速度,利用决策树技术进入抵押贷款管理,利用数据分析报告实施产业信贷风险控制,利用客户社交行为记录实施信用卡反欺诈,依据客户消费习惯、地理位置、销售时间进行推荐(精准营销)。不仅仅金融行业,政府部门会根据大数据分析结果来做预算,企业也会根据大数据来进行市场策略调整。
  Gartner指出,64%的受访企业表示他们正在或是即将进行大数据工作,然而其中一些企业却并不知道他们能够使用大数据做些什么。这正好印证了大数据领域的最主要的两个挑战:如何从大数据中获取价值以及如何定义大数据战略。这是本书首先需要解释的内容。
  谷歌、Amazon、Facebook等全球知名互联网企业作为大数据领域的先驱者,凭借自身力量进行大数据探索,甚至在必要时创造出相关工具。这些工具目前已经被视为大数据技术的基础,其中最知名的当数MapReduce与Hadoop。Hadoop是目前处理大规模结构化与非结构数据的首选平台,它提供了分布式处理框架与开发环境。MapReduce是一种计算框架,它实现了将大型数据处理任务分解成很多单个的、可以在服务器集群中并行执行的任务,这些任务的计算结果可以合并在一起来计算最终的结果。在Hadoop问世以来的十年间,新的组件(如:Spark)层出不穷,极大地扩张了整个Hadoop生态圈。
  大数据技术有别于传统数据处理工具和技术,而且大数据技术很难掌握,一般需要1-2年的反复尝试,在实际使用中解决了大量问题之后才能正确理解它。我们编写这本书的目的是,以硅谷大数据实战为基础,让读者略过那些不重要的大数据的细枝末节,通过实际的案例,帮助读者快速掌握大数据技术领域最能商用的大数据工具和软件平台,从而帮助读者轻松实施大数据方案。在本书中,我们将阐述如下最为硅谷所熟知的大数据相关技术:
  l 框架:Hadoop、Spark。
  l 集群管理:MapReduce、Yarn、Mesos。
  l 开发语言:Java、Python、Scala、Pig、Hive、Spark SQL。
  l 数据库:NoSQL、HBase、Cassandra、Impala。
  l 文件系统:HDFS、Ceph。
  l 搜索系统:Elastic Search。
  l 采集系统:Flume、Sqoop、Kafka。
  l 流式处理:Spark Streaming、Storm。
  l 发行版:HortonWorks、Cloudera、MapR。
  l 管理系统:Ambari、大数据管理平台。
  l 机器学习:Spark MLlib、Mahout。
  上面的列表也说明了,Hadoop生态圈有几十个软件组成。这些软件提供了什么功能?到底在什么情况下使用什么软件?软件之间怎么组合使用?这些问题正是本书想要回答的。本书与市场上其他大数据书籍的区别是,我们不是专注某一个软件(比如:Spark),而是阐述整个生态圈中的主流软件,通过实例让你理解这些软件是什么,在什么场合使用,相互的区别是什么。如果我们把这几十个软件比喻成几十种厨房工具,那就是让你避免拿着菜刀去削苹果,或者拿着水果刀去剁肉。
  除了阐述大数据的定义、前景和各类Hadoop发行版之外,本书主要是按照大数据处理的几个大步骤来组织内容的。
  (1)大数据存储:探究HDFS和HBase作为大数据存储方式的优劣。
  (2)大数据访问:探究SQL引擎层中Hive、Phoenix、Spark SQL等组件的功能,并阐述了全文搜索的ElasticSearch,也探究了Spark的高速访问能力。
  (3)大数据采集:大数据的采集是指接收各类数据源(比如:Web、行业应用系统或者传感器等)的数据。大数据采集的主要特点和挑战是导入的数据量大(每秒钟的导入量经常会达到百兆,甚至千兆级别)、并发数高和数据源的异构。采集端可能会有很多数据库(或文件),有时需要在导入基础上做一些简单的清洗和预处理工作。在这个部分,我们探究了Flume、Kafka、Sqoop等技术,也探究了如何使用Storm和Spark Streaming来对数据进行流式计算,来满足部分业务的实时和准实时计算需求。
  (4)大数据管理:探究数据模型、安全控制、数据生命周期等数据管理内容。
  (5)大数据的统计和分析:探究了如何利用分布式计算集群来对存储于其内的海量数据进行统计分析,重点探究了机器学习和Spark MLlib,也阐述了多种分析算法。
  参加本书编写的同志还有:余飞、邵敏华、欧阳涛、杨正礼、王娜、李祥、刘毕操、彭勃、李招、张剑、杨磊等人。由于我们水平有限,书中难免存在纰漏之处,敬请读者批评指正。杨正洪的邮件地址为yangzhenghong@yahoo.com。
  杨正洪
  2016年5月 于 San Jose


《洞见趋势:从数据洪流中提炼商业价值》 引言 在这个信息爆炸的时代,数据如同奔腾不息的河流,深刻地改变着我们认知世界、做出决策乃至商业运营的方方面面。然而,河流虽然壮阔,若无舟楫,则难以抵达彼岸;数据虽然庞大,若无智慧,则难以转化为真正的价值。本书《洞见趋势:从数据洪流中提炼商业价值》正是这样一艘能够帮助您在数据洪流中乘风破浪的舟楫,它并非关于某个具体技术名词的入门指南,而是旨在揭示如何从海量数据中洞察发展趋势、发现商业机会,并最终将这些洞见转化为可执行的策略,驱动企业实现持续增长。 本书的出发点,是认识到在当今竞争激烈的商业环境中,数据已经成为企业最宝贵的战略资产。那些能够有效利用数据、理解数据背后含义的组织,往往能在市场中占据先机,赢得竞争优势。然而,拥抱数据并非仅仅意味着收集、存储和分析,更重要的是理解数据的“语言”,解读其传递的信号,从中挖掘出那些肉眼难以察觉的趋势和规律。这本书将带领您跨越技术本身,聚焦于如何将数据转化为洞察,将洞察转化为行动,最终实现商业价值的飞跃。 第一章:数据的“心跳”——理解商业洞察的本质 本章将深入探讨“商业洞察”的真正含义。它不仅仅是报表上的数字,更是一种对商业世界深层运作逻辑的理解。我们将解析: 洞察的驱动力: 为什么商业洞察至关重要?它如何帮助企业做出更明智的决策,规避风险,抓住机遇?我们将从战略、运营、市场营销等多个维度阐述洞察的力量。 洞察的构成要素: 一个真正有价值的商业洞察,需要具备哪些特质?我们将会分析其准确性、时效性、可行性以及其对决策的影响力。 从数据到洞察的思维转变: 许多企业拥有大量数据,却止步于数据报表。本章将强调从“看到数据”到“理解数据”的思维飞跃,以及如何培养这种数据驱动的思考模式。我们将探讨如何提出正确的问题,引导数据分析的方向,而不是被动地接受数据呈现的结果。 趋势的信号: 数据洪流中隐藏着无数关于市场变化、消费者行为、竞争态势的信号。本章将教您如何识别这些信号,区分噪音与真正的趋势,并理解这些信号的潜在商业含义。例如,用户搜索词的变化可能预示着新的需求;社交媒体上的讨论热点可能暗示着新的消费潮流。 洞察的价值衡量: 如何评估一个商业洞察的真正价值?我们将会讨论其对收入增长、成本优化、客户满意度提升、市场份额拓展等方面的影响,并提供一些量化的衡量标准。 第二章:解码数据密码——数据在商业中的角色演进 本章将从更宏观的视角审视数据在现代商业生态中的角色演变,以及它如何成为企业不可或缺的一部分。 数据作为战略资产: 数据不再是IT部门的附属品,而是企业的核心战略资产。我们将探讨如何将数据战略与企业整体战略相结合,使其成为驱动企业发展的核心引擎。 数据在不同业务场景的应用: 从产品研发、市场营销、销售策略到客户服务,数据如何渗透到企业运营的每一个环节?我们将通过生动的案例,展示数据在不同业务场景下的具体应用价值。例如,通过分析用户行为数据,优化产品功能;通过分析营销活动数据,提升广告投放效率;通过分析客户反馈数据,改善服务体验。 数据驱动的决策文化: 建立一个真正以数据为驱动的决策文化,需要企业上下共同努力。本章将探讨如何打破数据孤岛,促进数据共享,以及如何通过培训和赋能,提升员工的数据素养。 数据与创新的协同: 数据不仅能帮助企业优化现有业务,更能激发新的商业模式和创新。我们将讨论如何利用数据发现潜在的市场需求,孵化新的产品和服务,从而在激烈的市场竞争中保持领先地位。 数据伦理与合规的重要性: 随着数据应用的深入,数据隐私、数据安全和合规性问题也日益凸显。本章将强调在拥抱数据价值的同时,必须高度重视数据伦理和合规性,建立负责任的数据使用原则。 第三章:趋势的“罗盘”——识别与解读关键商业信号 本章将聚焦于如何从纷繁复杂的数据中识别出有价值的商业信号,并对其进行深入解读。 多维度数据源的整合与理解: 商业信号并非只存在于结构化数据中。本章将指导您如何整合来自不同维度的数据源,包括但不限于: 内部数据: 销售记录、客户关系管理(CRM)数据、运营日志、财务报表、网站/App用户行为数据。 外部数据: 市场调研报告、行业白皮书、竞争对手分析、社交媒体数据、新闻资讯、公开的政府数据、第三方数据平台。 信号的预警与识别: 如何在数据洪流中捕捉那些预示着未来变化的“早期信号”?我们将探讨如何设定关键指标(KPIs),并利用可视化工具来监测这些指标的异常波动,从而提前预警潜在的风险或机遇。 趋势的形态与演化: 趋势并非一成不变,它们有其发生、发展、成熟甚至衰退的生命周期。本章将教您如何识别不同类型的趋势,例如: 短期波动: 季节性变化、突发事件影响。 中期增长/下降: 市场周期、消费者偏好转移。 长期颠覆性变革: 技术革新、社会结构演变。 关联性与因果性的探寻: 数据之间常常存在关联,但并非所有关联都意味着因果关系。本章将指导您如何深入分析数据间的关联,并尝试探寻其背后的因果机制,从而做出更精准的判断。 洞察的“故事性”构建: 有价值的洞察需要能够被清晰地传达和理解。本章将引导您如何将数据分析的结果,转化为具有说服力的“商业故事”,使其更容易被决策者接受和采纳。 第四章:从“看见”到“行动”——将洞察转化为商业策略 本章是本书的核心,我们将重点探讨如何将已有的商业洞察,转化为切实可行的商业策略,并最终驱动业务的增长。 洞察的验证与落地: 并非所有的洞察都具备立即落地的条件。本章将教授您如何对洞察进行进一步的验证,评估其可行性、潜在风险和投资回报,并制定相应的行动计划。 策略设计的原则: 一个成功的商业策略,需要具备哪些关键要素?我们将探讨其目标明确性、资源匹配性、风险可控性、执行可操作性等原则。 数据驱动的决策框架: 本章将介绍一些实用的数据驱动决策框架,帮助您系统地将数据洞察融入到决策流程中。例如,AB测试、试点项目、蒙特卡洛模拟等。 策略执行与监控: 策略的制定只是第一步,有效的执行和持续的监控同样至关重要。我们将讨论如何建立有效的执行机制,并利用数据反馈来持续优化和调整策略。 跨部门协同与沟通: 商业策略的落地,往往需要跨部门的协同合作。本章将强调如何通过有效的沟通和协作,确保各部门能够理解并执行共同的战略目标。 案例研究: 通过分析一系列成功的企业案例,展示它们如何将数据洞察转化为创新的商业策略,并最终取得显著的商业成就。这些案例将涵盖不同行业和应用场景,为读者提供宝贵的实践启示。 第五章:构建数据洞察的“生态系统”——组织与人才的建设 数据洞察的实现,离不开强大的组织能力和专业人才的支持。本章将着眼于如何构建一个能够持续产生和应用数据洞察的组织生态。 数据驱动型组织的特质: 一个真正的数据驱动型组织,应该具备怎样的文化、结构和流程?我们将深入剖析其核心要素。 人才的培养与引进: 哪些人才对于数据洞察至关重要?如何吸引、培养和留住具备数据分析、业务理解和沟通能力的复合型人才? 技术平台的支撑: 虽然本书不侧重技术细节,但良好的技术平台是数据洞察的基石。本章将讨论不同类型的数据技术平台如何支持数据收集、存储、处理、分析和可视化,以满足业务需求。 数据治理的重要性: 确保数据的质量、安全和合规性,是构建可信数据洞察的前提。本章将强调建立完善的数据治理体系。 持续学习与迭代: 数据驱动的商业环境瞬息万变,组织需要具备持续学习和迭代的能力,不断优化其数据洞察的流程和方法。 构建数据驱动的创新文化: 如何鼓励员工积极探索数据、分享洞察,并将其应用于业务创新?本章将提供一些实践建议。 结论:拥抱数据,洞见未来 《洞见趋势:从数据洪流中提炼商业价值》并非一本技术手册,而是一份关于如何驾驭数据、洞察趋势、驱动商业成功的行动指南。它强调的是一种思维模式,一种看待世界的方式,一种将数据转化为切实商业价值的能力。在这个充满机遇与挑战的时代,掌握从数据中提炼商业价值的能力,将是任何组织和个人在未来取得成功的关键。本书的每一章节都旨在为您提供清晰的思路、实用的方法和丰富的启发,帮助您在数据驱动的浪潮中,找到属于自己的方向,把握住未来的机遇。

用户评价

评分

我是一名市场营销从业者,平时工作中经常接触到大量的用户数据,但一直苦于没有系统的方法来深入挖掘这些数据背后的价值。在朋友的推荐下,我尝试阅读了这本《大数据技术入门》,感觉像是获得了一个秘密武器。书中虽然涉及到一些技术性的内容,但作者的讲解方式让我这个非技术背景的人也能理解。它没有一开始就让我们去学习复杂的编程语言,而是从大数据应用场景出发,阐述了不同行业是如何利用大数据来提升效率、优化用户体验的。我尤其对书中关于用户画像构建、精准营销策略制定以及市场趋势预测的章节印象深刻。作者用生动的语言和图示,将这些复杂的概念变得浅显易懂,并且提供了许多可以借鉴的思路和方法。读完这本书,我感觉自己看待用户数据的方式完全变了,不再是简单的数字罗列,而是充满了无限的可能性。我开始思考如何将书中的理念应用到我的实际工作中,比如如何更有效地进行用户分群,如何根据数据调整营销策略。这本书为我打开了新的思路,让我觉得大数据不再是一个遥不可及的概念,而是可以切实解决实际问题的强大工具。

评分

这本书简直是一场意外的惊喜!我一直对大数据这个概念充满好奇,但又觉得它听起来特别高大上,不知道从何下手。偶然间翻到了这本《大数据技术入门》,原本抱着试一试的心态,没想到它完全颠覆了我之前的想法。作者用一种非常通俗易懂的语言,把我从零开始,一点点地引导进了大数据这个广阔的世界。它没有一开始就抛出一堆晦涩难懂的专业术语,而是从最基础的概念讲起,比如“什么是大数据”,它的特点是什么,以及为什么大数据在当今社会如此重要。我特别喜欢书中通过大量的实际案例来解释这些概念,比如如何利用大数据分析用户行为,如何优化供应链,甚至是如何预测天气。这些案例让我真切地感受到了大数据带来的力量和价值,也激发了我更深入学习的兴趣。而且,书中提到的工具和技术,虽然我之前从未接触过,但作者的讲解方式让我觉得并不遥远,甚至有些跃跃欲试。总的来说,这本书为我打开了一扇通往大数据世界的大门,让我不再对这个领域感到畏惧,而是充满了探索的欲望。对于初学者来说,这绝对是一本不容错过的启蒙读物。

评分

一直对人工智能和数据科学领域抱有浓厚的兴趣,虽然接触过一些相关的课程和书籍,但总感觉缺少一个能够系统性梳理和串联知识点的“引路人”。无意中发现了这本《大数据技术入门》,它正好填补了我学习过程中的这个空白。这本书的优点在于其宏观的视角和前瞻性的洞察。它不仅仅局限于介绍某一项具体的技术,而是从大数据整个生态系统的角度出发,讲解了数据采集、存储、处理、分析到应用的全过程。我特别喜欢作者对大数据发展历程的回顾,以及对未来发展趋势的预测,这让我能够更好地理解大数据技术是如何一步步演进至今,以及未来可能的发展方向。书中对数据仓库、数据湖、Hadoop、Spark等关键技术的原理进行了概括性介绍,虽然没有深入到代码层面,但足以让读者建立起一个清晰的技术框架。更重要的是,作者强调了大数据技术背后的思想和方法论,比如数据驱动的决策、价值创造等,这对于我这样的学习者来说,远比掌握某个具体的技术更重要。这本书提供了一个很好的“鸟瞰图”,让我能够站在更高的维度去看待大数据这个领域。

评分

最近一直在思考如何提升自己的数据分析能力,想找些相关的书籍来学习,偶然看到这本《大数据技术入门》。坦白说,一开始对“大数据”这个词有些抵触,觉得它可能太偏向理论,而且过于技术化,担心自己难以消化。然而,当我翻开这本书后,这种顾虑很快就烟消云散了。作者的写作风格非常接地气,就像一位经验丰富的朋友在分享他的心得体会。他没有直接灌输复杂的算法或模型,而是从更宏观的层面,阐述了大数据产生的背景、发展趋势以及它对各行各业产生的深远影响。书中对大数据带来的机遇和挑战的分析,让我对这个领域有了更清晰的认知。我特别欣赏作者对于数据治理、数据安全以及数据伦理的探讨,这些都是在技术之外,同样重要且值得关注的议题。虽然书中没有深入讲解具体的代码实现,但它提供了一个非常好的全局观,让我明白大数据技术的核心价值在于如何通过数据来驱动决策、创造价值,而不是单纯的技术堆砌。对于想要理解大数据“为什么”以及“能做什么”的朋友,这本书提供了绝佳的视角。

评分

我是一名刚入行不久的数据分析师,在工作中经常会遇到各种各样的数据问题,常常感到力不从心。朋友推荐我阅读《大数据技术入门》,抱着学习的心态去读,没想到收获颇丰。这本书的叙述方式非常细腻,作者并没有上来就讲高深的理论,而是先从大数据产生的根源、历史背景以及在不同行业中的实际应用讲起。我特别喜欢书中通过一些具体的案例来解释大数据是如何解决实际问题的,比如在医疗健康领域如何通过大数据分析来辅助诊断,在金融领域如何利用大数据进行风险控制等。这些案例让我觉得大数据不再是抽象的概念,而是能够切实解决现实世界问题的强大力量。书中也对一些基础的大数据处理技术做了介绍,虽然没有深入讲解代码实现,但对于理解其原理和作用非常有帮助。更重要的是,这本书让我明白了在大数据领域,技术只是手段,最终目的是为了从数据中挖掘价值,实现业务的增长和优化。这本书为我指明了一个方向,让我知道在学习过程中应该侧重于哪些方面,也让我对未来在大数据领域的工作充满了信心。

评分

正版书籍,在京东上买书还值得放心

评分

好用好看

评分

也许是目前最好的大数据入门教程,从大格局到小细节,无不贯穿了作者对行业和技术的卓越认知。从这本书开始大数据之旅,路不会偏。

评分

大数据方面的书籍,买来了还没开始看呢

评分

东西不错的 ,以后还会再来买的,大家也可以买,谢谢大家谢谢京东

评分

挺好的,可以学习

评分

挺好的

评分

正在学习,对大数据建设应该会有帮助!

评分

入门类图书,希望把我带进门

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有