初识 DataFrameReader:
SparkSQL
的一个非常重要的目标就是完善数据读取, 所以 SparkSQL
中增加了一个新的框架, 专门用于读取外部数据源, 叫做 DataFrameReader
@Test def reader1(): Unit = { // 1. 创建 SparkSession val spark = SparkSession.builder() .master("local[6]") .appName("reader1") .getOrCreate() // 2. 框架在哪 val reader: DataFrameReader = spark.read }
DataFrameReader
由如下几个组件组成
组件 | 解释 |
---|---|
|
结构信息, 因为 |
|
连接外部数据源的参数, 例如 |
|
外部数据源的格式, 例如 |
DataFrameReader
有两种访问方式, 一种是使用 load
方法加载, 使用 format
指定加载格式, 还有一种是使用封装方法, 类似 csv
, json
, jdbc
等
/** * 初体验 Reader */ @Test def reader2(): Unit = { // 1. 创建 SparkSession val spark = SparkSession.builder() .master("local[6]") .appName("reader1") .getOrCreate() // 2. 第一种形式 spark.read .format("csv")//设置文件的类型 .option("header", value = true)//提示包含有表头 .option("inferSchema", value = true)//推断结构信息 .load("dataset/BeijingPM20100101_20151231.csv") .show(10) // 3. 第二种形式 spark.read .option("header", value = true) .option("inferSchema", value = true) .csv("dataset/BeijingPM20100101_20151231.csv") .show() }
初识 DataFrameWriter:
对于 ETL
来说, 数据保存和数据读取一样重要, 所以 SparkSQL
中增加了一个新的数据写入框架, 叫做 DataFrameWriter
DataFrameWriter
中由如下几个部分组成
组件 | 解释 |
---|---|
|
写入目标, 文件格式等, 通过 |
|
写入模式, 例如一张表已经存在, 如果通过 |
|
外部参数, 例如 |
|
类似 |
|
类似 |
|
用于排序的列, 通过 |
mode
指定了写入模式, 例如覆盖原数据集, 或者向原数据集合中尾部添加等
Scala 对象表示 | 字符串表示 | 解释 |
---|---|---|
|
|
将 |
|
|
将 |
|
|
将 |
|
|
将 |
@Test
def writer1(): Unit = {
System.setProperty("hadoop.home.dir","C:\winutils")
// 2. 读取数据集
val df = spark.read.option("header", true).csv("dataset/BeijingPM20100101_20151231.csv")
// 3. 写入数据集两种方法
df.write.json("dataset/beijing_pm.json")
df.write.format("json").save("dataset/beijing_pm2.json")
}