dataset是只有一列的表,默认列名为value
dataframe等价于dataset[row],也就是说我们读取结构化数据文件的每一行,作为一个Row对象,最后由众多的Row对象和对应的结构信息构成了Dataset对象,除了定义Row类型的dataset,用户还可以自定义变量类型,制定自定义的类型在网络传输的过程中需要序列化和反序列化,但是spark允许无需反序列化的情况下对其执行很多的操作(过滤、排序等)
package sparksql
import org.apache.spark.sql.SparkSession
object SparkSqltest1 {
def main(args: Array[String]): Unit = {
//创建sparksession
val sparkSession=SparkSession.builder().appName("test1").master("local[*]")getOrCreate()
import sparkSession.implicits._
//读取文件形成dataframe
// case class Person(name:String,age:Long)
// val caseClassDS=Seq(Person("zhangsan",18),Person("lisi",19)).toDS()
//caseClassDS.show()
val intDS=Seq(1,2,3,4).toDS()
intDS.map(_+1).show()
val df=sparkSession.read.json("hdfs://192.168.1.181:9000/json/data.json")
}
}
结果为:

本文详细介绍了Spark SQL中的Dataset和DataFrame概念。Dataset作为只有一列且默认名为value的数据结构,而DataFrame可以看作是Dataset[Row]的表示。在处理结构化数据时,DataFrame由多个Row对象组成,支持多种操作,如过滤和排序,无需反序列化。通过示例展示了如何使用Dataset进行wordcount操作,包括查看原始信息、切分字符串和按单词计数并排序。
最低0.47元/天 解锁文章
2590

被折叠的 条评论
为什么被折叠?



