Spark学习笔记:Spark进阶

目录

Spark进阶

一.在Spark shell中使用不同的数据源

1.通用Load/Save函数

2.掌握Parquet文件

3.Spark SQL JDBC

4.Hive On Spark

二.Spark SQL开发

三.Spark SQL性能调优


Spark进阶

一.在Spark shell中使用不同的数据源

1.通用Load/Save函数

(1)load函数是用在Spark SQL中,加载不同的数据源
默认的数据源是:Parquet文件
通过修改:spark.sql.sources.default参数可以修改默认的数据源

(2)加载Parquet文件,从而创建一个DataFrame
val userDF = spark.read.load("/root/temp/users.parquet")

查看表的结构和数据
userDF.printSchema
userDF.show

(3)显式指定加载的文件格式
val usersDF=spark.read.format("json").load("/root/sources./people.json")

(4)save函数的存储模式:
默认模式是error,如果数据(目录)已经存在,就会报错
append模式:追加写入
overwrite模式:覆盖写入
ignore模式:如果数据已经存在,将不会保存

例子:查询用户的名字和喜欢的颜色,并保存
userDF.select($"name",$"favorite_color").write.mode("overwrite").save("/root/temp/result/parquet")
验证
val testResultDF = spark.read.load("/root/temp/result/parquet/part-00000-d1b9c43c-2ef6-4c48-b5a0-af382751b088-c000.snappy.parquet")    
testResultDF.show

2.掌握Parquet文件

(1)Parquet是一个列式存储文件、是Spark SQL默认的数据源,并且支持对其的读写,也就是自动保存原始数据的Schema。当写Parquet文件时,所有的列被自动转换成Nullable。

(2)把其他类型的数据文件(json文件)转换成是一个Parquet文件

读取json文件
val empJson = spark.read.json("hdfs://centos:9000/emp.json")

转成Parquet文件
empJson.write.mode("overwrite").parquet("hdfs://centos:9000/parquet")

重新从该目录读取数据
val empParquet = spark.read.parquet("hdfs://centos:9000/parquet")

注册为视图
empParquet.createOrReplaceTempView("empview")

进行查询
spark.sql("select * from empview where deptno=10 and sal>1500").show
        
(3)支持Schema的合并
定义两个DataFrame:表
val df1 = sc.makeRDD(1 to 5).map(x=>(x,x*2)).toDF("single","double")
val df2 = sc.makeRDD(6 to 10).map(x=>(x,x*3)).toDF("single","triple")
             
保存到目录:默认是Parquet文件
df1.write.parquet("hdfs://centos:9000/parquet/test_table/key=1")
df2.write.parquet("hdfs://centos:9000/parquet/test_

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值