博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SparkSQL快速入门DataFrame与DataSet
阅读量:3951 次
发布时间:2019-05-24

本文共 1996 字,大约阅读时间需要 6 分钟。

2.1 DataFrame

2.1.1读取txt文件并输出

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

vim /opt/person.txt

1 zhangsan 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 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转换成DataFrameval 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.读取数据将数据转换为DataFramevar 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.读取数据将数据转换为DataFramevar 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 202 lisi 293 wangwu 254 zhaoliu 305 tianqi 356 kobe 40

2.编写代码并读取数据

// 1.读取文件var fileRDD=sc.textFile("file:///opt/person.txt")// 2.将读取的数据转换为DataSetval 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 转换为DataSetvar 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.将读取的数据转化为DataSetval jsonDS=jsonDF.as[Person]// 4.数据展示jsonDS.show

转载地址:http://yokzi.baihongyu.com/

你可能感兴趣的文章
最长子序列长度 (动态规划 O(N^2))
查看>>
最长子序列长度 (贪心+二分 O( Nlog(N) ))
查看>>
数塔 HDU - 2084 (简单的dp)
查看>>
超级楼梯 HDU - 2041 ( 简单的dp )
查看>>
Piggy-Bank HDU - 1114 ( 完全背包 )
查看>>
Knapsack problem FZU - 2214 ( 01背包 )
查看>>
瞌睡 (网易笔试题)
查看>>
1009 说反话 (20 分)
查看>>
1010 一元多项式求导 (25 分)
查看>>
1011 A+B 和 C (15 分)
查看>>
1012 数字分类 (20 分)
查看>>
1013 数素数 (20 分)
查看>>
1014 福尔摩斯的约会 (20 分)
查看>>
1015 德才论 (25 分)
查看>>
1016 部分A+B (15 分)
查看>>
1017 A除以B (20 分)
查看>>
1019 数字黑洞 (20 分)
查看>>
1032 挖掘机技术哪家强 (20 分)
查看>>
今夕何夕 HDU - 6112 ( 模拟 )
查看>>
Dividing HDU - 1059 ( 多重背包 - 二进制简化 )
查看>>