SparkSql介绍与基本使用;Spark Sql编程:优化点;集成Spark集成使用Hvie中的数据

Spark SQL介绍

属于Spark框架中的一个模块
相当于Hive框架(提供SQL,使用户不需要编写MapReduce程序),功能远远大于Hive
Hive 2.x版本,底层推荐使用Spark
美团,JD,饿了么,链家等一些大型公司都在使用SparkSql进行数据分析

Spark SQL是什么

(1)最初的功能

取代Hive框架,提供SQL语句,将SQL语句转成SparkCore程序,提交运行

前世今生:
	hive ->shark(spark on hive )->sparkSQL(重写依赖Hive的代码)
	shark0.9版本,shark框架太依赖于Hive框架,就是将Hive框架源码拿过去修改了部分代码(将以前SQL转成MapReduce代码改成 将SQL转成SparkCore的代码)
	如果Hive升级了,shark要升级
	如果spark升级了,shark也要升级

(2)sparkSQL的快速发展

sparkSQL(1.0)
	|	schemaRDD
sparkSQL(1.3)
	|	dataFrame 
sparkSQL(1.6)
	|	dataset
sparkSQL(2.0)
	DateSet和DataFrame进行合并
	DateSet[Row] = DataFrame

(3)数据结构

对要分析的数据进行封装,封装到集合中(一直在变化)
DataFrame/DataSet  == RDD + schema(字段类型和字段名称)
RDD[Person] +schema = DataFrame[name:String , age:Int , id:long]

(4)提供2中分析语句

(a)SQL
		99%与Hive一样,将数据放到Table,使用SQL语句查询分析
(b)DSL (domain specific)
		调用DateSet集合类中的函数进行分析(类似RDD)

(5)SparkSQL是如何读取数据

2.0版本之前
SQLContext(底层sparkContext) ->sqlContext
sqlContext. jdbc()/csv()/table/parquet()
2.0版本之后
SparkSession ->spark
spark.read.jdbc()/csv()/table/parquet()

spark编程:优化点

spark SQL 中产生shuffle的时候,RDD的默认分区数据为200

依据实际的数据量进行合理的设置
.config(“spark.sql.shuffle.partitions”,2)

将DataSet/DataFrame保存到外部存储系统中

设置SaveMode,默认值:存在即报错
以及实际需求进行合理设置
可以设置为Append,或者OverWrite

Saprk SQL与Hive的集成

初衷就是处理Hive表中的数据,与Hive有天然的集成关系
database/table/column/type ->元数据,存储在metaStore

本质

sparkSQL处理Hive表中的数据,其实就是读取MetaStore存储的元数据

实际项目开发中,

hive框架来讲,将启动Hive Remote MetaStore服务

具体的操作:

(1)启动metaStore服务
(2)告知metaStore服务在哪里

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无名一小卒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值