Spark项目学习-慕课网日志分析-days2-Spark SQL

1.Spark SQL 概述

(1)为什么需要SQL

1)事实上的标准

2)简单易学

Hive:类似于sql的Hive QL语言 sql==>mapreduce

   特点:基于mapreduce

   改进:基于tez spark

Spark:分布式的基于内存的计算框架

hive on spark ==> shark(hive on spark)

    优点:基于spark、基于内存的列式存储、与hive能够兼容

    缺点:hive ql的解析、逻辑执行计划生成、执行计划的优化是依赖于hive的,仅仅只是把物理执行计划从mapreduce作业变成了spark作业

2.SQL on Hadoop常用框架

(1)Hive

    1)sql==>mapreduce

    2)metastore:元数据

    3)sql:database、table、view

    4)由facebook开源

(2)impala

    1)cloudera公司:cdh(建议在生产上使用的hadoop系列版本)、cm(具有图形界面)

    2)sql:自己的守护进程执行的,非mr,基于内存的

    3)metastore:元数据

(3)presto

    1)facebook开源,京东用的很多

(4)drill

    1)sql

    2)访问hdfs rdbms json hbase mangodb s3 hive

(5)Spark SQL

    1)sql

    2)dataframe dataset api

    3)hdfs rdbms json hbase mangodb s3 hive 外部数据源

    

3.Spark SQL概述(处理结构化数据)

    1)不仅仅有访问或者操作SQL的功能,还提供了其他的非常丰富的操作:外部数据源,优化

    2)能够访问hive jison parquet等文件的数据

    3)SQL只是Spark SQL的一个功能

    4)Spark SQL提供了SQL的API DataFrame和Dataset的API

4. hive to spark SQL

1.SQLContext/HiveContext/SparkSession的使用

(1)SQLContext 在Spark1.0中使用

(2)HiveContext 在Spark1.0中使用

    1)to use a HiveContext,you do not need to have an hive setup

(3)SparkSession 在Spark2.0中使用

 2. Spark-shell/spark-sql的使用

(1)Spark速度比Hive快很多

(2)Spark-shell和Spark-sql用法差不多

执行过程:

    1)解析成逻辑计划

    2)Spark自身会进行一次计划优化

    3)生成物理执行计划,交给Spark执行

(3)过程:

    1)hive-site.xml配置文件(添加,放到spark下的conf中)

    2)--jars传递mysql驱动包

3. thriftserver/beeline的使用

(1)首先启动服务(要使用--jars传mysql驱动)

(2)启动beeline beeline -u jdbc:hive2://localhost:10000 -n hadoop  连接到thriftserver

4.thriftserver和普通的spark-shell/spark-sql有什么区别?

(1)spark-shell/spark-sql都是对应的一个spark application

(2)thriftserver,不管启动多少个客户端(beeline/code),永远都是一个spark application

    解决了一个数据共享问题,多个客户端可以共享数据;(客户端是指通过JDBC方式连接)

5.jdbc方式编程访问

在使用JDBC开发时,一定要记得先启动thriftserver

猜你喜欢

转载自blog.csdn.net/canglan211/article/details/82953512