spark-SQL理论
-
SparkSQL都支持哪些数据源;
数据库
Hive
Lucene:全文检索;解决索引模糊匹配like 前面加%不起作用;
纯代码编程(java),硬编码
Lucene Query Language:
ElasticSearch:6.6系统支持SQL语句; -
为什么要学习SparkSQL?
JavaSE,这一套程序的运行是在内存中;重启以后结果全部丢失;
JavaIO:把结果存储到硬盘中;把一套程序运行的结果存储到磁盘上;(txt,log,xls或者二进制文件)
把单机变成多机;(网络编程)
为什么要学习数据库;(数据量大比着xls,csv),查询方便,CRUD);(多人通过网络共同编辑数据);登记个人信息;
SQL语句是目前为止最好学的编程语言;
为什么要学习大数据(是多台服务器一块工作);(数据量无上限),计算的时候不卡死,只不过时间有点长;(hadoop生态圈,拿空间换取时间);presto+spark:拿内存来换取时间)
Mr:输入文件变成输出文件的过程吗?
完成可以使用sql来实现;输入文件就是(一张一张的表),输出文件(使用sql语句查询出来的结果)
Spark:RDD:RDD里面放的是输入文件,经过了一系列的RDD最终变成了想要的结果;(一系列的RDD可以理解为SQL语句的各个语法),最终的结果可以理解为输出文件;
问题:RDD学完了,为什么要学习RDD:RDD运行的速度超级快;
RDD也有输入文件,RDD也是把输入文件变成输出文件的过程;
是否可以像hive操作mr一样,也提供一套sql语句来操作RDD呢(当然可以的)
-
SparkSQL
让开发人员使用SQL语句来操作RDD;Spark操作SQL语句的架子(框架代码)
SparkSql,DataFrame(RDD),DataSet(RDD);RDD是父类,DataSet是子类;
来源例如:结构化数据文件、Hive中的表、外部数据库或现有的RDD
保存模式
列存储和行存储