SparkSQL DataFrame

概述

Spark SQL 的核心数据集,在RDD的基础上映射相应的字段名称,更像二维的数据表

创建 SparkSession 对象

val ss: SparkSession = SparkSession.builder
            .master("local[*]")
            .appName("a")
            .getOrCreate()

创建 DataFrame

有三种创建方式

一、通过文件方式

支持的文件类型

scala> spark.read.
csv   format   jdbc   json   load   option   options   orc   parquet   schema   table   text   textFile

创建

scala> val csvdata = spark.read.csv("file:///root/sparkdata/a.csv")
csvdata: org.apache.spark.sql.DataFrame = [_c0: string, _c1: string ... 1 more field]

scala> csvdata.show()
+---+-------+---+
|_c0|    _c1|_c2|
+---+-------+---+
|  1|    Bob| 12|
|  2|  Black| 12|
|  3|Bigdata| 13|
+---+-------+---+

二、RDD转换

注意:如果需要RDD与DF或者DS之间操作,那么都需要引入隐式转换,特别注意引入的位置

// 构建 Spark SQL 会话
val ss: SparkSession = SparkSession.builder
            .master("local[*]")
            .appName("a")
            .getOrCreate()
// 注意 ss 是 SparkSession 的对象
import ss.implicits._

在 SparkSession 创建 Sparkcontext 对象并创建 RDD

// 创建 SparkContext 对象,创建 RDD
val sc: SparkContext = ss.sparkContext
val listRDD: RDD[(Int, String)] = sc.makeRDD(List((1, "Bob"), (2, "Bigdata"), (3, "Black")))

转换 toDF(colNames: String*)

参数是映射的字段名称

val listDF: DataFrame = listRDD.toDF("id", "name")
listDF.show()
-------------
+---+-------+
| id|   name|
+---+-------+
|  1|    Bob|
|  2|Bigdata|
|  3|  Black|
+---+-------+
发表评论 / Comment

用心评论~