[Spark SQL] SparkSession、DataFrame 和 DataSet 练习
本課主題
- DataSet 实战
DataSet 实战
SparkSession 是 SparkSQL 的入口,然后可以基于 sparkSession 来获取或者是读取源数据来生存 DataFrameReader,在 Spark 2.x 版本中已经没有 DataFrame 的 API,它变成了 DataSet[Row] 类型的数据。
- 创建 SparkSession
val spark = SparkSession
.builder()
.master("local")
.appName("Spark SQL Basic Examples")
.getOrCreate() - 导入隐式转换的方法
import spark.implicits._
import org.apache.spark.sql.types._ // 自定义schema时导入 创建 DataFrame 即 DataSet[Row] 类型数据。
val df = spark.read.json("src/main/resources/general/people.json")
- 可以直接调用 DataFrame 很多很好用的方法,比如 select( ),filter( ),groupBy( )
df.show() //打印数据,默认是前20条数据
df.printSchema()
df.select("name").show() //提取column是name的数据
df.select($"name",$"age" + 1).show() //提取column是name和age+1的数据
df.filter($"age" > 25).select("name").show()
df.groupBy($"age").count().show()
- 可以直接调用 DataFrame 很多很好用的方法,比如 select( ),filter( ),groupBy( )
- 也可以自定义 case class 来创建 DataSet[Row] 类型
val personDF = sc.textFile("src/main/resources/general/people.txt") //personRDD
.map(x => x.split(",")) //Array[String] = Array(name, age)
.map(attr => Person(attr(0),attr(1).trim().toInt))
.toDF() - 或者用自定义 schema 的方式
val schemaString = "name,age"
val fields = schemaString.split(",").map(fieldName => StructField(fieldName, StringType, nullable = true))
val schema = StructType(fields) val personRDD = sc.textFile("src/main/resources/general/people.txt") //personRDD
val rowRDD = personRDD.map(_.split(",")).map(attr => Row(attr(0),attr(1).trim()))
val personDF = spark.createDataFrame(rowRDD,schema) 或者是调用 createOrReplaceTempView 方法来创建临时表运行 SQL
personDF.createOrReplaceTempView("people")
val sqlDF = spark.sql("SELECT * FROM people")
sqlDF.map(people => "Name: " + people(0)).show()
參考資料
资料来源来至 Spark 官方网站
[Spark SQL] SparkSession、DataFrame 和 DataSet 练习的更多相关文章
- spark结构化数据处理:Spark SQL、DataFrame和Dataset
本文讲解Spark的结构化数据处理,主要包括:Spark SQL.DataFrame.Dataset以及Spark SQL服务等相关内容.本文主要讲解Spark 1.6.x的结构化数据处理相关东东,但 ...
- Spark SQL、DataFrame和Dataset——转载
转载自: Spark SQL.DataFrame和Datase
- Spark学习之路(八)—— Spark SQL 之 DataFrame和Dataset
一.Spark SQL简介 Spark SQL是Spark中的一个子模块,主要用于操作结构化数据.它具有以下特点: 能够将SQL查询与Spark程序无缝混合,允许您使用SQL或DataFrame AP ...
- Spark 系列(八)—— Spark SQL 之 DataFrame 和 Dataset
一.Spark SQL简介 Spark SQL 是 Spark 中的一个子模块,主要用于操作结构化数据.它具有以下特点: 能够将 SQL 查询与 Spark 程序无缝混合,允许您使用 SQL 或 Da ...
- spark算子之DataFrame和DataSet
前言 传统的RDD相对于mapreduce和storm提供了丰富强大的算子.在spark慢慢步入DataFrame到DataSet的今天,在算子的类型基本不变的情况下,这两个数据集提供了更为强大的的功 ...
- Spark SQL 之 DataFrame
Spark SQL 之 DataFrame 转载请注明出处:http://www.cnblogs.com/BYRans/ 概述(Overview) Spark SQL是Spark的一个组件,用于结构化 ...
- 转】Spark SQL 之 DataFrame
原博文出自于: http://www.cnblogs.com/BYRans/p/5003029.html 感谢! Spark SQL 之 DataFrame 转载请注明出处:http://www.cn ...
- Spark RDD、DataFrame和DataSet的区别
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 转载请标明出处:小帆的帆的专栏 RDD 优点: 编译时类型安全 编译时就能检查出类型错误 面向对象的编程风格 直接通过类 ...
- Spark官方1 ---------Spark SQL和DataFrame指南(1.5.0)
概述 Spark SQL是用于结构化数据处理的Spark模块.它提供了一个称为DataFrames的编程抽象,也可以作为分布式SQL查询引擎. Spark SQL也可用于从现有的Hive安装中读取数据 ...
随机推荐
- 在Ubuntu14.04下安装Docker CE(1) - repository篇
从2017年3月开始,Docker开始分为社区版本和企业版,也就是Docker CE和Docker EE, 原来Ubuntu14.04下,通过sudo apt-get install docker.i ...
- QQ互联申请及配置
今天要说的只是针对QQ互联的操作,其他的互联请参考相关网站. 第一步:需要申请API接口的两码 自行登录QQ互联https://connect.qq.com/index.html,然后按照要求申请就O ...
- MyEclipse激活步骤
1.前言: MyEclipse 成功安装后使用天数仅仅有30天,打开软件后常常会弹出提醒我们在5天内要激活的对话框.没有激活的话,时间一到就不能使用了. 众所周知,中国的软件是不用花钱的,这里就介 ...
- BNUOJ34977夜空中最亮的星(数学,向量的应用)
夜空中最亮的星 Time Limit: 2000ms Memory Limit: 65536KB 64-bit integer IO format: %lld Java class name ...
- Android锁屏状态下弹出activity
在接收消息广播的onReceive里.跳转到你要显示的界面.如: Intent intent = new Intent(arg0,MainActivity.class); intent.addFlag ...
- 自学Python1.2-环境的搭建:Pycharm及python安装详细教程
Python几乎可以在任何平台下运行,如我们所熟悉的:Windows/Unix/Linux/Macintosh 一.windows下安装Python 1. 从python官方网站:http://www ...
- MySQL select into
MYSQL不支持: Select * Into new_table_name from old_table_name; Create table new_table_name (Select * fr ...
- windows日志监控
bat脚本,主要作用,每个五分钟读取日文本件中新增内容,进行错误赛选,如果有错误信息,将错误信息用邮件发送给管理员. 其中awk和sed需要手动下载 :读取number.txt文档,获取上一次执行时文 ...
- 在亚马逊linux环境上装mysql+添加启动项
安装mysql sudo yum install mysql sudo yum install mysql-server sudo yum install mysql-devel 添加到系统启动项su ...
- jQuery 文档操作方法
jQuery 文档操作方法 这些方法对于 XML 文档和 HTML 文档均是适用的,除了:html(). 方法 描述 addClass() 向匹配的元素添加指定的类名. after() 在匹配的元素之 ...