diff --git a/chapter1/1.3Spark完全分布式环境搭建.md b/chapter1/1.3Spark完全分布式环境搭建.md
index 1b6ac29..b9cfb2c 100644
--- a/chapter1/1.3Spark完全分布式环境搭建.md
+++ b/chapter1/1.3Spark完全分布式环境搭建.md
@@ -21,21 +21,19 @@
### 1.3.1 下载Spark安装包
-到`Spark`官网:https://archive.apache.org/dist/spark/ 下载
-与你已搭建的`Hadoop`版本相匹配的安装包,这里选择`Hadoop`版本为`2.6.0`,
-`Spark`版本为`2.2.0`。
+到`Spark`官网:下载地址 下载
+`Hadoop`版本为`2.7`,`Spark`版本为`2.3.4`的`spark`安装包。
-
+
-
### 1.3.2 解压安装包
-选择`master`节点安装`Spark`,将下载的`spark-2.2.0-bin-hadoop2.6.tgz`安装包放在该节点的`/home/hadoop/soft/`目录下,然后执行`tar –zxvf spark-2.2.0-bin-hadoop2.6.tgz`命令进行解压。
+首先选择`master`节点安装`Spark`,将下载的`spark-2.3.4-bin-hadoop2.7.tgz `安装包上传至该节点的`/home/hadoop/soft/`目录下,然后执行`tar –zxvf spark-2.3.4-bin-hadoop2.7.tgz `命令进行解压。
### 1.3.3 配置环境变量
@@ -44,11 +42,13 @@
不要忘了`source /etc/profile`
+该步骤所有节点均可执行
+
+### 1.3.4 修改 spark-env.sh 配置文件
-#####修改 spark-env.sh 配置文件
首先生成一份`spark-env.sh`文件:
-切换目录到: `/home/hadoop/soft/spark-2.2.0-bin-hadoop2.6/conf`
+切换目录到: `/home/hadoop/soft/spark-2.3.4-bin-hadoop2.7.tgz/conf`
执行命令:`mv spark-env.sh.template spark-env.sh`
修改`spark-env.sh`文件:
@@ -56,16 +56,18 @@
执行命令:`vi spark-env.sh`,添加以下内容:
```shell
-#指定JAVA_HOME位置
+#指定JAVA安装路径
export JAVA_HOME=java安装路径
-#spark master webui 端口,默认是 8080,跟 tomcat 冲突
+#指定SCALA安装位置
+export SCALA_HOME=scala安装路径
+#指定spark master webui 端口,默认是 8080,跟 tomcat 冲突
SPARK_MASTER_WEBUI_PORT=8888
#指定Master节点IP
-export SPARK_MASTER_IP=masterIP
+export SPARK_MASTER_IP=master节点IP
```
-### 1.3.4 修改 slaves 文件
+### 1.3.5 修改 slaves 文件
首先生成一份`slaves`文件
@@ -80,22 +82,24 @@ worker1
worker2
```
-### 1.3.5 分发安装包
-把该节点的`spark`安装包分发到`worker1`节点和`worker2`节点(可通过`linux`的`scp`命令)。
+### 1.3.6 分发安装包
+把master节点的`spark`安装包分发到`worker1`节点和`worker2`节点(可通过`linux`的`scp`命令)。
-#####启动spark
+### 1.3.7 启动spark
切换到`master`节点安装目录的`/sbin`目录下
执行命令启动`Spark`集群:`./start-all.sh`
-### 1.3.6 检查webUI界面
-在浏览器输入如下地址:`http://master地址:8888/`,可见如下页面。
+### 1.3.7 检查webUI界面
+
+启动完成后,在浏览器输入如下地址:`http://master地址:8888/`,可见如下页面。
+在该图片中,我们可以看到`Alive Workers: 3`,表示有三个运行中的`worker`节点。
至此,非高可用的`Standalone`模式即安装成功了。
diff --git a/chapter2/2结构化数据分析与处理简介.md b/chapter2/2结构化数据分析与处理简介.md
index 1c1403b..4af4a29 100644
--- a/chapter2/2结构化数据分析与处理简介.md
+++ b/chapter2/2结构化数据分析与处理简介.md
@@ -2,12 +2,12 @@
## 2.1 什么是Spark SQL
-SparkSQL是spark用来处理结构化的一个模块,它提供一个抽象的数据集DataFrame,并且是作为分布式SQL查询引擎的应用。
-我们之前已经学习了hive,它将HiveSQL转换成MR,然后提交到集群上去执行,减少编写MR查询的复杂性,但是因为采用计算框架,所以执行效率比较慢,所以spark SQL就应运而生。
+`Spark SQL`是`Spark`用来处理结构化的一个模块,它提供一个抽象的数据集`DataFrame`,并且是作为分布式`SQL`查询引擎的应用。
+或许你之前学习过`Hive`,我们知道它将`HiveSQL`转换成`MR`,然后提交到集群上去执行,减少编写`MR`查询的复杂性,但是因为采用计算框架,执行效率比较慢,所以`Spark SQL`就应运而生。
-我们编写Spark SQL代码时从何开始呢?答案就是SparkSession。
+我们编写`Spark SQL`代码时从何开始呢?答案就是`SparkSession`。
### 2.2 什么是SparkSession
`Spark`中所有功能的入口点都是`SparkSession`类。要创建基本的`SparkSession`,只需使用`SparkSession.builder()`。
@@ -24,14 +24,15 @@ spark = SparkSession \
print(spark.version);
```
-有了SparkSession,下一步就是创建DataFrames。
+有了`SparkSession`,下一步就是创建`DataFrames`。
### 2.3 创建DataFrames
-使用`SparkSession`可以从现有`RDD`,`Hive`表或`Spark`数据源(`json`,`parquet`,`jdbc`,`orc`,`libsvm`,`csv`,`text`)等格式文件创建DataFrame。
+使用`SparkSession`可以从现有`RDD`,`Hive`表或`Spark`数据源(`json`,`parquet`,`jdbc`,`orc`,`libsvm`,`csv`,`text`)等格式文件创建`DataFrame`。
-以下示例为读取Json文件创建DataFrame。
-`df =spark.read.json("examples/src/main/resources/people.json")`
-people.json数据如下:
+以下示例为读取`Json`文件创建`DataFrame`。
+`df =spark.read.json("/people.json")`
+
+`people.json`数据如下:
```json
{"name":"Michael"}
@@ -40,9 +41,10 @@ people.json数据如下:
```
-有了DataFrames之后,我们就可以对数据进行相应操作;
+有了`DataFrames`之后,我们就可以对数据进行相应操作.
+
### 2.4使用DataFrames
-在Python中,可以通过属性(df.age)或通过索引(df ['age'])(推荐使用)访问DataFrame的列。
+在`Python`中,可以通过属性`df.age`或通过索引`df ['age']`(推荐使用)访问`DataFrame`的列。
举例如下:
```python
@@ -63,7 +65,8 @@ df.select("name").show()
| Justin|
+-------+
```
-我们也可以通过编写SQL语句的方式执行上述操作。
+
+我们也可以通过编写`SQL`语句的方式执行上述操作。
### 2.5 通过SQL语句的方式
```python
@@ -85,24 +88,24 @@ sqlDF.show()
以下示例可将结果以`parquet`格式文件保存到`F:\\test\\anamesAndAges`路径。
```
-//写入并保存到指定路径
+#写入并保存到指定路径
df.select("name", "age").write.format("parquet").save("F:\\test\\anamesAndAges")
```
### 2.7 保存模式介绍
-`save()`方法支持设置保存模式。
+`save`方法支持设置保存模式。
-`SaveMode` 类型如下:
+ 类型如下:
-| 所有语言 | 含义 |
+| 所有语言 | 说明 |
| ------------ | ------------ |
-| `"error" or "errorifexists"` (默认) | 将`Dataset`保存到数据源时,如果数据已存在,则会引发异常。 |
-| ` "append" ` | 将`Dataset`保存到数据源时,如果数据/表已存在,则Dataset的内容应附加到现有数据。 |
-| `"overwrite"` | 覆盖模式意味着在将`Dataset`保存到数据源时,如果数据/表已经存在,则预期现有数据将被`Dataset`的内容覆盖。 |
-| `"ignore"` | 忽略模式意味着在将`Dataset`保存到数据源时,如果数据已存在,则预期保存操作不会保存`Dataset`的内容而不会更改现有数据。这与`CREATE TABLE IF NOT EXISTSSQL`中的类似。 |
+| `"error" or "errorifexists"` (默认) | 将`DataFrame`保存到数据源时,如果数据已存在,则会引发异常。 |
+| ` "append" ` | 将`Dataset`保存到数据源时,如果数据/表已存在,则DataFrame的内容应附加到现有数据。 |
+| `"overwrite"` | 覆盖模式意味着在将`DataFrame`保存到数据源时,如果数据/表已经存在,则预期现有数据将被`DataFrame`的内容覆盖。 |
+| `"ignore"` | 忽略模式意味着在将`DataFrame`保存到数据源时,如果数据已存在,则预期保存操作不会保存`DataFrame`的内容而不会更改现有数据。这与`CREATE TABLE IF NOT EXISTSSQL`中的类似。 |
```
-//覆盖原有数据并写入到F:\\test\\anamesAndAges路径上
+#覆盖原有数据并写入到F:\\test\\anamesAndAges路径上
df.select("name", "age").write.mode("overwrite").format("parquet").save("F:\\test\\anamesAndAges")
```
\ No newline at end of file