003-90-15【SparkSQL&DF&DS】慈航寺庙山脚下八卦田旁油菜花海深处人家王大爷家女儿用GPT学习DataSet的基本操作

003-90-14【SparkSQL&DF&DS】慈航寺庙山脚下八卦田旁油菜花海深处人家王大爷家女儿用GPT学习DataSet的基本操作

【SparkSQL&DF&DS】Dataset 的创建和使用

  • [【SparkSQL&DF&DS】2,Dataset 的创建和使用](#【SparkSQL&DF&DS】2,Dataset 的创建和使用)
    • [1, 创建](#1, 创建)
    • [2, show](#2, show)
    • [3, map](#3, map)
    • [4, as](#4, as)
    • [5, select](#5, select)
    • [6 filter && show(1)](#6 filter && show(1))

【SparkSQL&DF&DS】2,Dataset 的创建和使用

1, 创建

scala 复制代码
import spark.implicits._
//
// import spark.implicits._ 是一条常见的导入语句,用于在 Spark 中导入隐式转换的相关功能。
// 在 Spark 中,隐式转换是一种机制,它允许您在使用 DataFrame 或 Dataset 时,对其进行一些方便的操作,
// 例如使用 DataFrame 的 .as[T] 方法将其转换为 Dataset,或者使用 Dataset 的 .toDF() 方法将其转换为 DataFrame。
// 通过导入 spark.implicits._,您可以自动应用这些隐式转换,而无需显式地调用相关的转换方法。
//
// 以下是一个示例,展示了如何使用 import spark.implicits._ 导入隐式转换:
// import org.apache.spark.sql.SparkSession
// import spark.implicits._ // 导入隐式转换
// val spark = SparkSession.builder()
//   .appName("Example")
//   .getOrCreate()
// // 创建一个 DataFrame
// val df = spark.read.format("csv").load("path/to/data.csv")
// // 使用隐式转换的功能,将 DataFrame 转换为 Dataset
// val ds = df.as[MyClass]
// // 对 Dataset 执行一些操作
// val filteredDs = ds.filter(_.age > 30)
// // 将 Dataset 转换回 DataFrame
// val newDf = filteredDs.toDF()

// $example on:create_ds$
// Encoders are created for case classes
val caseClassDS : Dataset[Person] = Seq(Person("Andy", 32)).toDS()

2, show

scala 复制代码
caseClassDS.show()
// +----+---+
// |name|age|
// +----+---+
// |Andy| 32|
// +----+---+

3, map

sala 复制代码
// Encoders for most common types are automatically provided by importing spark.implicits._
val primitiveDS = Seq(1, 2, 3).toDS()
primitiveDS.map(_ + 1).collect() // Returns: Array(2, 3, 4)

4, as

scala 复制代码
// DataFrames can be converted to a Dataset by providing a class. Mapping will be done by name
val path = "spark-demo/src/main/resources/people.json"
val peopleDS = spark.read.json(path).as[Person]
peopleDS.show()
// +----+-------+
// | age|   name|
// +----+-------+
// |null|Michael|
// |  30|   Andy|
// |  19| Justin|
// +----+-------+

5, select

scala 复制代码
peopleDS.select("name").show
// +-------+
// |   name|
// +-------+
// |Michael|
// |   Andy|
// | Justin|
// +-------+

6 filter && show(1)

scala 复制代码
peopleDS.filter($"age" > 18).show
// +---+------+
// |age|  name|
// +---+------+
// | 30|  Andy|
// | 19|Justin|
// +---+------+
peopleDS.show(1)
// +----+-------+
// | age|   name|
// +----+-------+
// |null|Michael|
// +----+-------+
// $example off:create_ds$
相关推荐
摆烂工程师5 小时前
GPT-Image-2 真有点夯:中文不乱码了!GPT-Image-2的入口在哪?教你如何确认自己是否被灰度推送了 GPT-Image-2
gpt·chatgpt·openai
MY_TEUCK5 小时前
Sealos 平台部署实战指南:结合 Cursor 与版本发布流程
java·人工智能·学习·aigc
handler017 小时前
Linux: 基本指令知识点(2)
linux·服务器·c语言·c++·笔记·学习
炽烈小老头8 小时前
【每天学习一点算法 2026/04/20】除自身以外数组的乘积
学习·算法
破浪前行·吴9 小时前
数据结构概述
数据结构·学习
深圳市九鼎创展科技9 小时前
MT8883 vs RK3588 开发板全面对比:选型与场景落地指南
大数据·linux·人工智能·嵌入式硬件·ubuntu
.千余10 小时前
【Linux】基本指令3
linux·服务器·开发语言·学习
渣渣盟11 小时前
Flink事件时间与窗口操作实战指南
大数据·flink·scala
南境十里·墨染春水11 小时前
C++ 笔记 thread
java·开发语言·c++·笔记·学习
南境十里·墨染春水11 小时前
C++ 笔记 高级线程同步原语与线程池实现
java·开发语言·c++·笔记·学习