Spark Dataset介绍和使用
来源:互联网 发布:2004美国vs阿根廷数据 编辑:程序博客网 时间:2024/06/09 21:52
Dataset是从Spark 1.6开始引入的一个新的抽象,当时还是处于alpha版本;然而在Spark 2.0,它已经变成了稳定版了。下面是DataSet的官方定义:
Dataset是特定域对象中的强类型集合,它可以使用函数或者相关操作并行地进行转换等操作。每个Dataset都有一个称为DataFrame的非类型化的视图,这个视图是行的数据集。上面的定义看起来和RDD的定义类似,RDD的定义如下:
RDD也是可以并行化的操作,DataSet和RDD主要的区别是:DataSet是特定域的对象集合;然而RDD是任何对象的集合。DataSet的API总是强类型的;而且可以利用这些模式进行优化,然而RDD却不行。
Dataset的定义中还提到了DataFrame,DataFrame是特殊的Dataset,它在编译时不会对模式进行检测。在未来版本的Spark,Dataset将会替代RDD成为我们开发编程使用的API(注意,RDD并不是会被取消,而是会作为底层的API提供给用户使用)。
实例:
import com.spark.DataFrameRDDApp.SetLoggerimport org.apache.spark.sql.SparkSession/** * Created by *** 2017/12/23 16:17 * DataSet的使用 */object DataSetApp { def main(args: Array[String]): Unit = { SetLogger() val spark = SparkSession.builder() .master("local[2]") .appName("DataFrameRDDApp").getOrCreate() val path = "src/data/sales.csv" // 解析CSV文件 val salesDF = spark.read.option("header", "true").option("inferSchema", "true").csv(path) salesDF.show() // 注意:需要导入隐式转换 import spark.implicits._ //转换成DataSet val salesDS = salesDF.as[Sales] salesDS.show() salesDS.map(line => line.itemId).show() salesDF.select("itemId").show() salesDS.select("transactionId").show() spark.stop() } case class Sales(transactionId: Int, customerId: Int, itemId: Int, amountPaid: Double)}数据(sales.csv):
transactionId,customerId,itemId,amountPaid111,1,1,100.0112,2,2,505.0113,3,3,510.0114,4,4,600.0115,1,2,500.0116,1,2,500.0117,1,2,500.0118,1,2,500.0119,2,3,500.0120,1,2,500.0121,1,4,500.0122,1,2,500.0123,1,4,500.0124,1,2,500.0
DataSet静态类型和运行时类型安全示意图:
SQL:
seletc name from perple; 编译(compile)时——通过,执行时(Running)——报错 【spark.sql(" seletc name from perple")】
DataFrame:
peopleDF.seletc("name") 编译(compile)时——报错
peopleDF.select("nname") 编译(compile)时——通过,执行时(Running)——报错
DataSet:
peopleDS.seletc("name") 编译(compile)时——报错
salesDS.map(line => line.itemIddd).show() 编译(compile)时——报错
- Spark Dataset介绍和使用
- Spark 2.0介绍:Dataset介绍和使用
- Spark 2.0介绍:Dataset介绍和使用
- Spark DataSet介绍
- Spark SQL DataFrame/Dataset介绍
- Spark SQL、DataFrame和Dataset
- Spark RDD和Dataset区别
- Spark DataFrame和Dataset区别
- spark core组件:RDD、DataFrame和DataSet介绍、场景与比较
- spark-dataset
- Spark RDD、DataFrame和DataSet的区别
- Spark RDD、DataFrame和DataSet的区别
- Spark RDD、DataFrame和DataSet的区别
- Spark RDD、DataFrame、DataSet区别和联系
- Spark RDD、DataFrame和DataSet的区别
- spark core组件:RDD、DataFrame和DataSet
- Spark RDD、DataFrame和DataSet的区别
- Spark RDD、DataFrame和DataSet的区别
- AC自动机(Trie图)
- Appium-常见API的Python用法(一)
- LeetCode#338 Counting Bits题解(C++版)
- 数据结构实验之查找七:线性之哈希表
- R之核密度图
- Spark Dataset介绍和使用
- ZD的情况记录
- TCP四次挥手原理
- 第5章 连接控制:学习stty
- java中协变与逆变
- vsftpd.conf配置文件详解
- C++11使用表格驱动技术替换switch case
- Hibernate完成多对多的关联关系映射
- linux下配置本地yum源快速搭建LAMP环境