Delta lake with Java--利用spark sql操作数据2

ops/2024/9/23 11:15:35/

上一篇文章尝试了建库,建表,插入数据,还差删除和更新,所以在这篇文章补充一下,代码很简单,具体如下:

java">import org.apache.spark.sql.SaveMode;
import org.apache.spark.sql.SparkSession;public class DeltaLakeWithSparkSql2 {public static void main(String[] args) {SparkSession spark = SparkSession.builder().master("local[*]").appName("delta_lake").config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension").config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog").getOrCreate();String sourcePath="D:\\bookcode\\delta-lake-up-and-running-main\\data\\YellowTaxi\\";var df = spark.read().format("parquet").load(sourcePath);System.out.println("总数据量:"+df.count());df.write().format("delta").mode(SaveMode.Overwrite).save("file:///D:\\\\bigdata\\\\detla-lake-with-java\\\\YellowTaxi");spark.sql("CREATE DATABASE IF NOT EXISTS taxidb");spark.sql("CREATE TABLE IF NOT EXISTS taxidb.YellowTaxi USING DELTA LOCATION 'file:///D:\\\\bigdata\\\\detla-lake-with-java\\\\YellowTaxi'");spark.sql("DESCRIBE TABLE taxidb.YellowTaxi").show(false);spark.sql("SELECT COUNT(*) from  taxidb.YellowTaxi WHERE VendorID>0").show(false);spark.sql("SELECT * from  taxidb.YellowTaxi WHERE tpep_pickup_datetime='2021-01-01 00:30:10'").show(false);spark.sql("DELETE FROM taxidb.YellowTaxi WHERE tpep_pickup_datetime='2021-01-01 00:30:10'").show(false);spark.sql("SELECT * from  taxidb.YellowTaxi WHERE tpep_pickup_datetime='2021-01-01 00:30:10'").show(false);spark.sql("DESCRIBE HISTORY taxidb.YellowTaxi").show(false);spark.sql("SELECT INPUT_FILE_NAME(), * from  taxidb.YellowTaxi WHERE tpep_pickup_datetime='2022-01-01 00:35:40'").show(false);spark.sql("UPDATE taxidb.YellowTaxi SET passenger_count=99 WHERE tpep_pickup_datetime='2022-01-01 00:35:40'").show(false);spark.sql("SELECT INPUT_FILE_NAME(), * from  taxidb.YellowTaxi WHERE tpep_pickup_datetime='2022-01-01 00:35:40'").show(false);spark.sql("DESCRIBE HISTORY taxidb.YellowTaxi").show(false);}
}

里面涉及的数据集YellowTaxi,在如下地址下载,这个也是Delta Lake Up and Runing的配套仓库

GitHub - benniehaelen/delta-lake-up-and-running: Companion repository for the book 'Delta Lake Up and Running'

具体运行结果如下,没有什么需要注意的,纯粹就是输入一下代码,验证一下结果


http://www.ppmy.cn/ops/32333.html

相关文章

Java对接高德api搜索POI 2.0 关键字搜索

目录 一、注册账号 二、搜索小demo 1.首先要引入依赖 2. 然后查看打印结果即可 三、搜索接口代码 1.引入依赖 2.yml配置 2.Controller 3.静态工具类 四、运行测试 一、注册账号 高德开放平台 | 高德地图API 注册高德开发者;去控制台创建应用&#xff…

Spring扩展点(三)Spring常用内置工具类

Spring常用内置工具类 Base64UtilsFileCopyUtilsFileSystemUtilsReflectionUtilsResourceUtilsStringUtilsAopUtilsMethodInvokingBean(简洁反射调用,指定类的指定方法,将其声明为Bean即可在 afterPropertiesSet 阶段触发反射方法调用)ReflectionUtils&a…

c#Excel:1.创建并保存Excel表格

(1)创建一个名为OfficeOperator2的类库项目。引用操作Word的.NET类库,如图所示 (2)在OfficeOperator2项目中添加一个名为ExcelOperator的类,并添加Microsoft.Office.Interop.Excel命名空间。 (3)在ExcelOpe…

bind、call和apply

bind、call和apply都是 JavaScript 中用于改变函数执行上下文(即函数内部的this指向)的方法,它们的主要区别如下: bind 方法会创建一个新的函数,并将这个函数的执行上下文绑定到指定的对象。它不会立即执行函数&#x…

【亲测有效】Element UI 自定义 Notification 通知样式不生效,设置this.$notify样式不生效问题

不生效的源代码 <style lang"scss" scoped> ::v-deep .el-notification__group {margin-left: 130px; } </style><style lang"scss" scoped> .el-notification__group {margin-left: 130px; } </style>以上两种代码均不生效 解决…

代码审查工具Gerrit简介

Gerrit是一个开源的代码审查和项目管理工具&#xff0c;特别为Git版本控制系统设计。它提供了一个基于Web的界面&#xff0c;使得开发者能够提交他们的更改供其他人审查&#xff0c;之后这些更改可以被接受并合并到项目中。Gerrit极大地促进了团队协作和代码质量的提升&#xf…

GO语言核心30讲 进阶技术 (第二部分)

原站地址&#xff1a;Go语言核心36讲_Golang_Go语言-极客时间 一、接口类型的合理运用 1. 接口类型只包含方法&#xff0c;不包含字段。 方法集合就是它的全部特征。 任何数据类型&#xff0c;只要实现了接口的方法集合全部&#xff0c;那么它就是这个接口的实现类型 2. 怎么…

Thymeleaf

Thymeleaf Thymeleaf是一个现代服务器端Java模板引擎&#xff0c;适用于Web和独立环境。它能够处理HTML、XML、JavaScript、CSS&#xff0c;甚至纯文本。这个模板引擎的主要目标是提供一种优雅且高度可维护的模板创建方式。为实现这一目标&#xff0c;Thymeleaf以自然模板的概…