A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 不二晨 于 2018-10-9 10:59 编辑

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
【转载】https://blog.csdn.net/canglan211 ... 512?utm_source=copy

2 个回复

倒序浏览
奈斯
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马