SparkSQL快速入门DataFrame与DataSet

2.1 DataFrame
2.1.1读取txt文件并输出

1.在本地创建一个文件,有id、name、age三列,用空格分隔,然后上传到hdfs上

vim /opt/person.txt

1 zhangsan 20
2 lisi 29
3 wangwu 25
4 zhaoliu 30
5 tianqi 35
6 kobe 40
//Spark session available as 'spark'.
// 1.读取数据安装空格进行切分
var lineRDD=sc.textFile("file:///opt/person.txt").map(_.split(" "))
// 2.定义class样例类对象 用来接收文件数据
case class Person(id:Int, name:String, age:Int)
// 3.将读取出的RDD 关联到Person中
val personRDD = lineRDD.map(x => Person(x(0).toInt, x(1), x(2).toInt)) 
// 4.将带有对象的RDDh转换成DataFrame
val personDF = personRDD.toDF
// 5.读取数据和schema元数据信息
personDF.show
// 6.展示出元数据信息(查看表结构)
personDF.printSchema
// 7.将personDF 转换为转换为临时表
personDF.createOrReplaceTempView("t_person")
// 8.编写SQL语句查询数据(可以根据自己的需求来写)
spark.sql("select name from t_person").show
2.1.2读取json文件

1.准备数据json数据

{"name":"Michael"}
{"name":"Andy", "age":30}
{"name":"Justin", "age":19}

2.编写代码进行读取数据

// 1.读取数据将数据转换为DataFrame
var jsonDF=spark.read.json("file:///opt/people.json")
// 2.使用jsonDF 展示数据
jsonDF.show
2.1.3 读取parquet文件

1.准备数据parquet数据

在Linux中的spark安装目录examples/src/main/resources

2.编写测试代码并读取数据

// 1.读取数据将数据转换为DataFrame
var parquet=spark.read.parquet("file:export/servers/spark-2.2.0-bin-2.6.0-cdh5.14.0/examples/src/main/resources/users.parquet")
// 2.数据展示
arquet.show
2.2 创建DataSet
2.2.1通过spark.createDataset创建Dataset

1.准备数据

vim /opt/person.txt

1 zhangsan 20
2 lisi 29
3 wangwu 25
4 zhaoliu 30
5 tianqi 35
6 kobe 40

2.编写代码并读取数据

// 1.读取文件
var fileRDD=sc.textFile("file:///opt/person.txt")
// 2.将读取的数据转换为DataSet
val ds1 = spark.createDataset(fileRDD)
// 3.数据展示
ds1.show
2.2.2 通过RDD.to方法生成DataSet
// 1.创建class样例类对象 用来保存数据
case class Person(name:String,age:Int)
// 2.定义一个列表存储数据
var data = List(Person("zhangsan",20),Person("lisi",30))
// 3.将列表转换成RDD类型
 var dataRDD=sc.makeRDD(data)
// 4.将RDD 转换为DataSet
var ds2=dataRDD.toDS
// 5.数据展示
ds2.show
2.2.3 通过DataFrame.as[泛型]转化成DataSet
// 1.创建class样例类对象 用来保存数据
case class Person(name:String,age:Long)
// 2.读取数据
val jsonDF=spark.read.json("file:///opt/people.json")
// 3.将读取的数据转化为DataSet
val jsonDS=jsonDF.as[Person]
// 4.数据展示
jsonDS.show
  • 33
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 29
    评论
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大数据老哥

欢迎支持

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

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

打赏作者

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

抵扣说明:

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

余额充值