一、数据集
1 张三 26
2 李四 31
3 王五 22
4 赵柳 19
5 James 35
二、代码
object SparkSqlDemo {
def main(args: Array[String]): Unit = {
//配置参数
val conf = new SparkConf().setMaster("local[*]").setAppName("sparkSql")
val sc = new SparkContext(conf)
val session = SparkSession.builder().config(conf).getOrCreate()
//读取文件
val lines = sc.textFile("hdfs://192.168.xx.xx:9000/test/user.txt")
//处理数据
val row = lines.map(line => {
val strings = line.split(" ")
val id = strings(0).toInt
val name = strings(1)
val age = strings(2).toInt
Row(id, name, age)
})
//表头
val sch = StructType(List(StructField("id",IntegerType,true),StructField("name",StringType,false),StructField("age",IntegerType,false)))
//组装
val frame = session.createDataFrame(row,sch)
frame.createOrReplaceTempView("table01")
session.sql("select sum(age) from table01").show()
sc.stop()
}
}
+--------+
|sum(age)|
+--------+
| 133|
+--------+
说明:
1、spark本地运行有3种模式:通过setMaster()配置
(1)local 模式:本地单线程运行;
(2)local[k]模式:本地K个线程运行;
(3)local[*]模式:用本地尽可能多的线程运行。
2、spark程序从sparkContext开始,需要实例化,并配置好参数conf:
(1)setMaster():设置程序运行模式
(2)setAppName():为该spark程序设置一个名称
3、sparkSession
SparkSession是spark sql的入口,需要创建SparkSession对象:
build()是SparkSession的构造器,提供过这个构造器可以添加各种配置:
Method | Description |
---|---|
getOrCreate | 获取或者新建一个 sparkSession |
enableHiveSupport | 增加支持 hive Support |
appName | 设置 application 的名字 |
config | 设置各种配置 |
4、创建DataFrame
通过createDataFrame()来创建dataframe