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

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

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'

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

相关推荐
都叫我大帅哥14 分钟前
🌊 Redis Stream深度探险:从秒杀系统到面试通关
java·redis
都叫我大帅哥14 分钟前
Redis持久化全解析:从健忘症患者到记忆大师的逆袭
java·redis
程序猿阿越33 分钟前
Kafka源码(一)Controller选举与创建Topic
java·后端·源码
程序无bug38 分钟前
Spring6 当中 Bean 的生命周期的详细解析:有五步,有七步,有十步
java
二川bro41 分钟前
飞算智造JavaAI:智能编程革命——AI重构Java开发新范式
java·人工智能·重构
Q_970956391 小时前
java+vue+SpringBoo校园失物招领网站(程序+数据库+报告+部署教程+答辩指导)
java·数据库·vue.js
Wyc724091 小时前
Maven
java·数据库·maven
程序猿小D1 小时前
[附源码+数据库+毕业论文]基于Spring+MyBatis+MySQL+Maven+jsp实现的电影小说网站管理系统,推荐!
java·数据库·mysql·spring·毕业设计·ssm框架·电影小说网站
小新学习屋2 小时前
Spark从入门到熟悉(篇三)
大数据·分布式·spark