修改格式

master
慢慢 6 years ago
parent 457830afd7
commit d77bd75300

@ -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`官网:<a href="https://archive.apache.org/dist/spark/spark-2.3.4/" target="view_frame">下载地址</span> </a> 下载
`Hadoop`版本为`2.7``Spark`版本为`2.3.4`的`spark`安装包。
<p align="center" >
<img style="border: 2px solid #ddd;padding: 5px; background: #fff;" src="https://www.educoder.net/api/attachments/444846" alt="" height="100%" width="100%" />
<img style="border: 2px solid #ddd;padding: 5px; background: #fff;" src="https://www.educoder.net/api/attachments/457070" alt="" height="100%" width="100%" />
</p>
### 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/`,可见如下页面。
<p align="center" >
<img style="border: 2px solid #ddd;padding: 5px; background: #fff;" src="https://www.educoder.net/api/attachments/444947" alt="" height="100%" width="100%" />
</p>
在该图片中,我们可以看到`Alive Workers: 3`,表示有三个运行中的`worker`节点。
至此,非高可用的`Standalone`模式即安装成功了。

@ -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")
```
Loading…
Cancel
Save