建设一个商城网站要多少钱,织梦与wordpress seo哪个好,英语网站排名,制作企业网站教程1. 概念#xff1a;
RDD#xff1a;
弹性分布式数据集#xff1b;
DataFrame#xff1a;
DataFrame是一种以RDD为基础的分布式数据集#xff0c;类似于传统数据库中的二维表格。带有schema元信息#xff0c;即DataFrame所表示的二维表数据集的每一列都带有名称和类型…1. 概念
RDD
弹性分布式数据集
DataFrame
DataFrame是一种以RDD为基础的分布式数据集类似于传统数据库中的二维表格。带有schema元信息即DataFrame所表示的二维表数据集的每一列都带有名称和类型。这样的数据集可以用SQL查询。DataFrame是不可变的即一旦创建就不能修改其内容。 DataFrame 是 DataSet[Row]
DataSet 简单的说DataSet和DataFrame的区别就是DataSet会在编译阶段就进行类型检查 而DataFrame在运行阶段才会类型检查。 Dataset是一个强类型的特定领域的对象Dataset也被称为DataFrame的类型化视图这种DataFrame是Row类型的Dataset即Dataset[Row]。Dataset结合了DataFrame的优化和RDD的类型安全。Dataset提供了编译时类型检查而DataFrame不会DataFrame只会在运行阶段才会检查类型确保数据在编译阶段就符合预期的类型。
dataset是dataFrame的升级版对象dataframe是一个传统的sql编程对象如果要想使用dataframe进行灵活开发的比较复杂。 dataset和dataFrame是一个类别的对象都是可以进行sql查询数据的并且可以支持rdd上面的方法。
当我们需要对一个表对象进行二次处理的话建议大家转换为dataset而不是dataframe。
package com.hainiu.sparkimport org.apache.spark.sql.{Dataset, SparkSession}object TestDSAndDF {def main(args: Array[String]): Unit {val session SparkSession.builder().master(local[*]).appName(test).getOrCreate()import session.implicits._val ds: Dataset[String] session.read.textFile(file:///headless/workspace/spark/data/a.txt)ds.map(t{val strs t.split( )(strs(0), strs(1), strs(2), strs(3))})// val df session.read.format(org.apache.spark.sql.execution.datasources.v2.text.TextDataSourceV2)
// .load(file:///headless/workspace/spark/data/a.txt)
//
// val ds: Dataset[(String, String, String, String)] df.map(row {
// val line row.getAs[String](value)
// val strs line.split( )
// (strs(0), strs(1), strs(2), strs(3))
// })}
}
2. 三者之间的转换 val ds: Dataset[String] session.read.textFile(file:///headless/workspace/spark/data/a.txt)ds.map(t{val strs t.split( )(strs(0), strs(1), strs(2), strs(3))})val df1 ds.toDF(id,name,age,gender)val df: Dataset[Row] session.read.format(org.apache.spark.sql.execution.datasources.v2.text.TextDataSourceV2).load(file:///headless/workspace/spark/data/a.txt)val rdd session.sparkContext.textFile(file:///headless/workspace/spark/data/a.txt)rdd.toDS()rdd.toDF()df.rddds.rdd