【sparksql整理】

sparksql

0.什么是spqrksql:

主要处理结构化数据(带有schema信息)

1.sparksql特征:

1.sparkcore里面的算子在sparksql里面也可以使用
2.可以使用sql和api两种方式处理结构化数据
3.连接外部数据源:sparksql可以处理多种不同数据源的数据:hive,avro,parquet,orc,json,jdbc,text
4.sparksql可以访问hive元数据

2.hive on spark vs spark on hive

hive on spark :hive查询引擎是mr【bug很多,几乎不用】
spark on hive :sparksql去hive上查询数据【较多使用】

3.df和rdd的区别:

1.rdd不同的语言开发执行性能不一样:java、scala、python(java最快)
2.df:使用不同语言开发执行性能是一样的

4.如何构建dataframe三种方式:

1.已经存在的集合中
	1.反射的方式
	2.编程的方式
2.hive
3.外部数据源:json、csv、jdbc
	1.读数据api:
		spark.read.format("text").load(paths : _*)  =》 df 
	2.写数据api:
		df.write.mode(SaveMode.Overwrite)format("text").save(path)
	3.文本格式写数据:sparksql支持多列输出常用手段是:将df转变成rdd方式进行输出
	4.hive处理json和sparksql处理json的区别:普通json都一样,区别在嵌套json
		1.api:
			struct:打点
			array:expolde + struct:打点
		2.sql:
			hive自己的处理方式
			struct:打点
			array:expolde + struct:打点
	5.csv文件:可以用excel打开,默认字段之间的分隔符是,【可以更改】
	6.jdbc:目前这种写法加载数据性能不高,首选采用 谓词下压 手段:加where筛选条件

5.如何把rdd转变成df/ds:

rdd toDF/toDS

6.如何把df/ds转变成rdd:

df/ds.rdd

7.df如何转变成ds:

df.as[数据类型]ds

8.sparksql处理hive里的数据,api方式有问题:saveAsTable

普通表:会自动建表可以使用
分区表:会自动建表,动态分区方式写入不能使用
insertinto不能和partitionBy()一起使用
写入方式:append/overwrite

解决手段:data写入到hdfs table path即可
	分区表:不可read hive元数据和数据没有关联上 修复table元数据 msck

9.数据写入hive:

	1.sql方式:hive创建一张表
	2.insert:into/overwrite
	3.分区表需要开启两个参数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值