一、开发sql程序
(1) new sql context)
(2) val data = sql context.read ("joon").load (jsonfilepath) //返回的是张表
(3)data.show() //可以直接使用show查看数据
(4) 上传至服务器
(5) 提交作业
spark.submit --class --master -jars filepath
4. hive Context 的使用
5. spark session 的使用
(1)新版本不再使用 context,而使用 spark session
6. spark-shell/ spark-sql 使用
1) hive.site拷贝到spark的conf目录下
2) 启动的时候需要指定mysql 驱动 jars
7. thrift-server/beeline的使用
二、 Data Frame 和 Dataset
1. DataFrame是分布式的数据集,按照列进行存储,它包含schema信息,类似数据库表,RDD也是分布式的数据记录,只不过它没有schema信息,类似于文本文件中的一行数据。
2. DataFrame 是以列组织的数据集(类似于数据库中的表),也就是DataSet的集合
3. RDD和DataFrame的对比
4、常用的 DataFrame常见的API
(1) select.
(2) filter
(3) show
5. DataFrame 与 RDD 相互操作有如下两种方式
第一种方式是反射的方式
1) 定义 case class
2) 将 RDD 转换为 DatàFrame (需要导入隐式转换)
第二种方式(通过编程方式)
(1)将 RDD 转换为 Row
(2)定义一个 structType
(3)通过 spark 的 createDataFrame()对Row和structType进行关联
6. DataSet类似于DataFrame,但是有更加严格的语法检查和类型检查。
三、外部数据源
(1)每个应用程序都加载数据(以前学习的load)
(2)对加载的数据作处理完之后要将结果存入到目的地(这个目的地可以是 Mpql/HBases/json
(3)主要架构如下
(4) 本章操作其他数据源的方式和上一章介绍的操作json数据源的方式类似,比如text、csv等格式文件
(5) 操作 Hive表
spark table(tableName)
(6) 操作 mysql 数据库
mysql数据源可以参考官方网站的示例进行操作
四、列式数据库和行式数据库的存储原理
从存储原理的角度来看,行式数据库要查找某一类的数据比如b2必须从头开始遍历,所以时间需要5个单位,而对于列式数据库,如果要读取b2,只需要指定列族b,然后再指定列的名称b2,访问时间只要3个单位。
特别是查询一列数据,行式数据库需要访问所有的数据,列式数据库只需要查询特定的列,性能大规模提升。