Detla lake with Java--入门

news2024/11/26 18:45:51

 最近在研究数据湖,虽然不知道研究成果是否可以用于工作,但我相信机会总是留给有准备的人。

数据湖尤其是最近提出的湖仓一体化概念,很少有相关的资料,目前开源的项目就三个,分别是hudi, detla lake, iceberg。最终选择使用detla lake,因为国外有相关的书籍,国内一些关于spark书籍也有提到detla lake。花了一些钱把国内外相关的书籍都买了一遍,发现全部都是用scala来实现的,很少用java来实现,决定参考其他大牛,例如:https://edu.csdn.net/course/detail/35238的做法,逐步把自己自学成果总结一下。

入门肯定先是弄一个类似HelloWorld的例子,就叫HelloDeltaLake吧。

可能大家都以为涉及Spark是不是要先部署一套Spark环境,经过尝试,发现原来不需要,研发环境可以使用常用的window 11操作系统,跟一般java项目一样先通过IDEA建立一个Maven工程,这里有几个注意点:

1、detla lake建议使用java 8,11,17,8新版IDEA不太支持了,17又太新了,所以最终选择11

2、pom.xml里面要注意spark和detla lake一定要对应scala的版本号,具体如下面代码字里面的2.12,三者必须一致,我尝试过spark用2.13,delta lake用2.12结果报错,总之这个问题花了很多时间去解决。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>detla-lake-with-java</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <dependencies>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>3.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>3.5.1</version>

        </dependency>

        <dependency>
            <groupId>io.delta</groupId>
            <artifactId>delta-spark_2.12</artifactId>
            <version>3.1.0</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.17.0</version>
        </dependency>
    </dependencies>

</project>

3、最后就是录入简单的程序了

package detal.lake.java;

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SaveMode;
import org.apache.spark.sql.SparkSession;

public class HelloDetlaLake {
    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();

        Dataset<Row> data = spark.range(0,5).toDF();
        data.write().format("delta").mode(SaveMode.Overwrite).save("file:///D:\\bigdata\\detla-lake-with-java\\delta-table-data");

        Dataset<Row> df = spark.read().format("delta").load("file:///D:\\bigdata\\detla-lake-with-java\\delta-table-data");
        df.printSchema();
        df.show();

    }
}

代码很简单,不需要运行spark,然后用1~5生成一个5行数据,保存到D:\bigdata\detla-lake-with-java\delta-table-data这个目录,然后再去把数据查询回来,该代码是直接使用 https://edu.csdn.net/course/detail/35238 课程里面提供的。

最终在IDEA运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1632121.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二维码门楼牌管理应用平台建设:档案管理的新篇章

文章目录 前言一、二维码门楼牌管理应用平台概述二、阵地档案管理的现状与挑战三、二维码门楼牌管理应用平台在阵地档案管理中的优势四、二维码门楼牌管理应用平台的建设与实施五、二维码门楼牌管理应用平台的未来发展六、结论 前言 随着信息技术的飞速发展&#xff0c;二维码…

如何下载AndroidStudio旧版本

文章目录 1. Android官方网站2. 往下滑找到历史版本归档3. 同意软件下载条款协议4. 下载旧版本Androidstudio1. Android官方网站 点击 Android官网AS下载页面 https://developer.android.google.cn/studio 进入AndroidStuido最新版下载页面,如下图: 2. 往下滑找到历史版本归…

无人机+集群组网+单兵图传:空地一体化组网技术详解

空地一体化组网技术是一种结合了无人机、集群自组网和单兵图传等多种技术的先进通信解决方案。这种技术方案的主要目的是在前线事故现场和后方指挥中心之间建立一个高效、稳定的通信链路&#xff0c;以确保信息的实时传输和指挥的顺畅进行。 首先&#xff0c;前端视频采集部分&…

视频美颜SDK与主播美颜工具的技术原理与应用场景分析

在直播视频领域中&#xff0c;视频美颜SDK和主播美颜工具发挥着至关重要的作用。本文将探讨这些工具的技术原理及其在不同应用场景中的应用。 一、视频美颜SDK的技术原理 1.1 图像处理技术 视频美颜SDK的核心技术之一是图像处理技术。根据用户设定的美颜参数进行相应的调整。…

【办公类-22-13】周计划系列(5-5)“周计划-05 周计划表格内教案部分“节日”清空改成“节日“” (2024年调整版本)Win32

背景需求&#xff1a; 本学期19周&#xff0c;用了近10周的时间&#xff0c;终于把周计划教案部分的内容补全了&#xff08;把所有教案、反思的文字都撑满一个单元格&#xff09;&#xff0c; 一、原始教案 二、新模板内的教案 三、手动添加文字后的样式&#xff08;修改教案…

后端学习记录~~JavaSE篇(Module08-异常 上 )

总览&#xff1a; Java概述&#xff1a; 思维导图文件在本人个人主页上-----资源模块 资源详情&#xff08;免费下载&#xff09;&#xff1a;Java学习思维导图异常篇资源-CSDN文库https://download.csdn.net/download/m0_61589682/89238330 整体展示&#xff1a;

2023年工业园区水环境管理典型案例名单公布

案例申报咨询&#xff1a; 中华环保联合会水环境治理专业委员会 联 系 人&#xff1a;王小雅 联系电话&#xff1a;13718793867 联系邮箱&#xff1a;wxyacef-water.com.cn

分类预测 | Matlab实现POA-BP鹈鹕算法优化BP神经网络多特征分类预测

分类预测 | Matlab实现POA-BP鹈鹕算法优化BP神经网络多特征分类预测 目录 分类预测 | Matlab实现POA-BP鹈鹕算法优化BP神经网络多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现POA-BP鹈鹕算法优化BP神经网络多特征分类预测&#xff08;Matlab实…

Linux 第十三章

&#x1f436;博主主页&#xff1a;ᰔᩚ. 一怀明月ꦿ ❤️‍&#x1f525;专栏系列&#xff1a;线性代数&#xff0c;C初学者入门训练&#xff0c;题解C&#xff0c;C的使用文章&#xff0c;「初学」C&#xff0c;linux &#x1f525;座右铭&#xff1a;“不要等到什么都没有了…

Crowd counting 系列NO.1—CSRNet

CSRNet:Dilated Convolutional Neural Networks for Understanding the Highly Congested Scenes 声明&#xff1a;博客是用latex写的&#xff0c;所以直接用图片来展示吧&#xff0c;效果是一样的。下载资源网上都很容易搜到&#xff0c;如需下载资源&#xff0c;请留言。

《ESP8266通信指南》9-TCP通信(Arudino开发)

往期 《ESP8266通信指南》8-连接WIFI&#xff08;Arduino开发&#xff09;&#xff08;非常简单&#xff09;-CSDN博客 《ESP8266通信指南》7-Arduino 开发8266的环境配置与示例代码烧录-CSDN博客 《ESP8266通信指南》6-创建TCP服务器&#xff08;AT指令&#xff09;-CSDN博…

C++:string 类

在C中定义一个 std::string 字符串可以采用以下几种方式&#xff1a; 1.使用字符串字面量初始化&#xff1a; std::string str "Hello, world!"; 2.使用构造函数初始化&#xff1a; std::string szStringB("Hello wolven"); 3.使用重复字符初始化&am…

UE4内存优化

内存查看命令​ 可以通过Stat MemoryPlatform查看对应的内存信息 Total Virtual虚拟内存的总量 Available Virtual可用的虚拟内存 Total Physical 物理内存的总量 Available Physical 可用物理内存总量 Peak Used Virtual 表示应用程序或游戏在运行过程中达到的虚拟内存使用峰…

android 分区存储(沙盒存储)适配总结

目录 一、分区存储概念 1.外部存储分类 2.分区存储如何影响文件访问 二、分区适配方案 1. 应用分区存储的文件访问规定 (1).应用专属目录--私有目录 (2).共享目录文件--公有目录 2.MediaStore API介绍 3.Storage Access Framework介绍 三、所有文件访问权限 四、总结…

十大USDT交易平台大全XEX交易所

USDT是一种基于比特币区块链网络的加密代币&#xff0c;主要运用于数字货币交易平台&#xff0c;以稳定币为主。USDT的核心价值在于其与真实货币的固定兑换比率1:1&#xff0c;所以被称为Tether。随着加密货币市场的不断壮大&#xff0c;越来越多的交易平台开始支持USDT&#x…

常用的4个Linux Shell脚本,实现运维自动化的基础

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《Linux &#xff1a;从菜鸟到飞鸟的逆袭》&#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、前言 1、Linux的起源与发展 2、什么是Shell脚本 二、实…

go引入自建包名报错 package XXX is not in std和goland设置GO111MODULE提示冲突

首先在引入自建包的时候报错 查找网上的解决方法&#xff1a; 1、goland取消勾选Enable Go modules integration 2、set GO111MODULEoff 但是都没解决&#xff0c;而且更奇怪的是&#xff0c;我在cmd里面查看go env就显示set GO111MODULEoff 但是在goland里面的终端输入 go…

户外小型气象站

TH-QC10随着环境保护意识的日益增强&#xff0c;气象监测在环保工作中扮演着越来越重要的角色。户外小型气象站作为一种便携、高效的气象监测设备&#xff0c;为环保工作提供了有力的支持。本文将对户外小型气象站的功能、应用场景进行简要介绍。 一、户外小型气象站的功能 户…

第九届中国海洋大学信息安全竞赛 Re 睡Lite wp

还得自己查资料 相近的版本就行 可以找到一些字符&#xff0c;经过分析可以猜测sub_48就是类似sleep的减速函数 就算真用芯片也跑不出来&#xff0c;一直sleep 往下翻可以找到很多字符 拼在一起可以大致看出flag

操作系统——优先权算法c++实现

变量描述 测试数据 5 A 0 4 4 B 1 3 2 C 2 5 3 D 3 2 5 E 4 4 1 先来先服务算法 简述 该算法实现非常简单就是对到达时间排个序&#xff0c;然后依次进行即可&#xff0c;对结构体的sort进行了重载 代码 void FCFS() {//先来先服务算法std::cout<<"\n\t\t\t\t\…