不适合人类阅读的学习笔记
有问题经常去stackoverflow.com上找找
或者直接去看官方的API原版或者翻译版:官方文档的中文版
DataSet 与 DataFrame
Dataset是特定域对象中的强类型集合,它可以使用函数或者相关操作并行地进行转换等操作。每个Dataset都有一个称为DataFrame的非类型化的视图,这个视图是行的数据集。
DataSet和RDD主要的区别是:DataSet是特定域的对象集合;然而RDD是任何对象的集合。DataSet的API总是强类型的;而且可以利用这些模式进行优化,然而RDD却不行。
Dataset的定义中还提到了DataFrame,DataFrame是特殊的Dataset,它在编译时不会对模式进行检测。在未来版本的Spark,Dataset将会替代RDD成为我们开发编程使用的API。
创建DataFrame
import org.apache.spark.sql.SparkSession
...
val sparkses = SparkSession
.builder()
.getorCreate() //这两个为必须有的
val df = sparkses.read.csv("...filename.csv")
//这里read后面的方法名称与具体要读的文件类型有关
df.show() //打印内容
创建DataSet
- 方法一:创建case class (对于复杂的数据没有成功)
例如
val sparkses = SparkSession .builder() .getorCreate() case class keyvalue(key: Int, value: String) import sparkses.implicit._ //引入隐式转换库 val df = Seq((1,"asdf"),(2,"34234")).toDF("key", "value") val ds = df.as[keyvalue] // org.apache.spark.sql.Dataset[keyvalue] = [key: int, value: string]
case class的参数上限为22
- 例:
val tupDs = df.as[(Int,String)] // org.apache.spark.sql.Dataset[(Int, String)] = [_1: int, _2: string]
最后更新于2018.4.21
原文:大专栏 Spark学习笔记——进阶
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。