SparkSQL介绍及快速入门

1.SparkSQL概述

1.什么是SparkSQL?

用于处理构造化数据的spark模块

可以通过DataFrame和DataSet处理数据

2.SparpSQL特点

易整合 可以使用java、scala、python、R 等语言的API操作
统一数据访问 连接到任何数据源的方式相同
兼容hive 标准的数据连接 (JDBC/ODBC)
SQL优缺点

优点:表达非常清晰,难度低,易学习

缺点: 负责的业务需要复杂的SQL,复杂的分析,SQL嵌套较多。机器学习较难实习

3.Hive 和SparkSQL的对比

Hive 是将sql转化成MapReduce进行计算

SparkSQL是将SQL转换RDD集进行计算

4.SparkSQL中的两个抽象

什么是RDD?
弹性分布式数据集

什么是DataFrame?
DataFrame是以RDD为基础的带有Schema元信息的分布式数据集(DataFrame=Schema+RDD*N)

什么是DataSet?
含有类型信息的DataFrame就是DataSet (DataSet =DataFrame+类型=schema+RDD*N+类型)

DataSet包含了DataFrame的功能

2 集群模式初体验

2.1 DataFrame

2.1.1读取txt文件并输出

1.在本地创建一个文件,有id、name、age三列,用空格分隔,然后上传到hdfs上

vim /opt/person.txt

1 zhangsan 20
2 lisi 29
3 wangwu 25
4 zhaoliu 30
5 tianqi 35
6 kobe 40
//Spark session available as 'spark'.
// 1.读取数据安装空格进行切分
var lineRDD=sc.textFile("file:///opt/person.txt").map(_.split(" "))
// 2.定义class样例类对象 用来接收文件数据
case class Person(id:Int, name:String, age:Int)
// 3.将读取出的RDD 关联到Person中
val personRDD = lineRDD.map(x => Person(x(0).toInt, x(1), x(2).toInt)) 
// 4.将带有对象的RDDh转换成DataFrame
val personDF = personRDD.toDF
// 5.读取数据和schema元数据信息
personDF.show
// 6.展示出元数据信息(查看表结构)
personDF.printSchema
// 7.将personDF 转换为转换为临时表
personDF.createOrReplaceTempView("t_person")
// 8.编写SQL语句查询数据(可以根据自己的需求来写)
spark.sql("select name from t_person").show
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值