Spark SQL
1、下载匹配版本
Hive 地址下载
https://mirrors.tuna.tsinghua.edu.cn/apache/hive/
spark地址下载
http://spark.apache.org/downloads.html
hadoop下载地址
https://hadoop.apache.org/releases.html
spark需要Scala支持,所以需要配置Scala,这里使用Scala 2.11,因为Spark 2.0 默认使用Scala 2.11
hive 的安装版本与spark的安装版本需要匹配
具体的版本信息可以参考如下页面
这里我们常用的匹配版本是:Spark 2.3 + hive 3.0 + Scala 2.11 + Hadoop 2.7
使用SQL于Spark有两种常见的方式,Hive On Spark和SparkSQL,两种方式类似,只是SQL引擎不同,但是计算引擎都是Spark。
2、Spark安装
解压配置环境变量
export SCALA_HOME=/home/XXX/mydata/software/scala-2.11.0
export SPARK_HOME=/home/XXX/mydata/software/spark-2.3.0-bin-hadoop2.7
export PATH=/$PATH:$SCALA_HOME/bin:$SPARK_HOME/bin
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.4-src.zip:$PYTHONPATH
执行pyspark可以打开python接口
3、SparkSQL
Spark的SQL的相关介绍可以参考如下页面。
技术数据模型–DataFrame,DataFrame是由“命名列”(类似关系表的字段定义)所组织起来的一个分布式数据集合。你可以把它看成是一个关系型数据库的表,可以通过多种来源创建:结构化数据文件,hive的表,外部数据库,或者RDDs。以上内容参考了相关的博客
4、示例程序
from pyspark import SparkContext,SparkConf
import os
from pyspark.sql import SparkSession
from pyspark.sql import Row
spark = SparkSession\
.builder\
.appName("PythonWordCount")\
.getOrCreate()
#默认的分隔符是逗号
lines = spark.read.csv(path='/home/XXX/Spark/Demo', header=True)
#如果分隔符是tab键
#lines = spark.read.option("delimiter", "\t").csv(path='/home/pinyu.su/intent/wechat/sample.txt', header=True)
lines.createOrReplaceTempView("Demo")
lines.show()
#显示部分结果
spark.sql("SELECT id,name FROM bixby WHERE name == \"libai\" ").show()
#将文件输出到本地,结果会输出到res文件夹中
spark.sql("SELECT id,name FROM bixby WHERE name == \"libai\" ").write.format("csv").save("/home/XXX/Spark/res")
print "seccess
执行python的文件命令是
spark-submit Demo.py
输出文件到res目录之后,是多个csv文件,然后需要把这边结果汇总起来
touch total.txt
for file in ./*
do
if [ "${file##*.}"x = "csv"x ]
then
echo $file
cat $file >> total.txt
fi
done
echo done