前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SparkSQL基本使用

SparkSQL基本使用

作者头像
sparkle123
发布2018-04-26 13:20:41
发布2018-04-26 13:20:41
1.1K00
代码可运行
举报
运行总次数:0
代码可运行
  • 往Hadoop集群上上传测试数据,hdfs dfs -cat /person/employee.txt employee.txt
代码语言:javascript
代码运行次数:0
运行
复制
1,zhangxx,20,manager
2,wangxin,25,employee
3,wangergou,78,xixi
4,wawo,35,gogo
5,liwei,28,programmer
6,hanmeimei,29,UI

1.读取数据,将每一行的数据使用列分隔符分割 val lineRDD = sc.textFile("hdfs://hdp-sk-01:9000/employee.txt", 1).map(_.split(" ,"))

2.定义case class(相当于表的schema) case class Employee(id:Int, name:String, age:Int,job:String)

3.导入隐式转换 import sqlContext.implicits._

4.将lineRDD转换成personRDD val personRDD = lineRDD.map(x => Employee(x(0).toInt,x(1),x(2).toInt,x(3).toString))

5.将personRDD转换成DataFrame val personDF = personRDD.toDF

6.对personDF进行处理

SQL风格语法

代码语言:javascript
代码运行次数:0
运行
复制
personDF.registerTempTable("t_person")
sqlContext.sql("select * from t_person order by age desc limit 2").show
sqlContext.sql("desc t_person").show
val result = sqlContext.sql("select * from t_person order by age desc")

7.保存结果

代码语言:javascript
代码运行次数:0
运行
复制
result.save("hdfs://hdp-sk-01:9000/sql/res1") //默认parquet文件形式
result.save("hdfs://hdp-sk-01:9000/sql/res2", "json") //指定json文件形式

JSON文件格式覆写HDFS上的JSON文件

代码语言:javascript
代码运行次数:0
运行
复制
import org.apache.spark.sql.SaveMode._
result.save("hdfs://hdp-sk-01:9000/sql/res2", "json" , Overwrite)

8.重新加载以前的处理结果(可选)

代码语言:javascript
代码运行次数:0
运行
复制
sqlContext.load("hdfs://hdp-sk-01:9000/sql/res1")//默认加载parquet文件形式
sqlContext.load("hdfs://hdp-sk-01:9000/sql/res2", "json")//json的存储文件以json形式加载

res2之前上传的时json文件,如果使用 sqlContext.load("hdfs://hdp-sk-01:9000/sql/res2")默认加载parquet文件形式,会报下面的错误。

TaskSetManager: Lost task 1.0 in stage 4.0 (TID 12, 192.168.92.112): java.io.IOException: Could not read footer: java.lang.RuntimeException: hdfs://hdp-sk-01:9000/sparksql/res2/part-r-00000-86cf6674-e647-4b71-bb88-dbe34fc36d0e is not a Parquet file. expected magic number at tail [80, 65, 82, 49] but found [105, 34, 125, 10]

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.04.18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档