Iceberg与Spark整合环境配置

news/2024/9/16 23:21:41/ 标签: spark, iceberg, catalog, spark和iceberg整合

版本对应关系

参考官网
在这里插入图片描述

核心依赖jar包

从官网下载对应版本的iceberg-spark-runtime-xxx.jar包。

  1. 利用spark配置参数–package或–jars引入

–packages 参数允许你指定 Maven 仓库中的包,这些包将会被自动下载并添加到 Spark 的类路径中。这对于使用 Maven 协调版本的库特别有用,例如,当你想使用特定版本的 Spark SQL 或其他通过 Maven 发布的库时。
当你使用 --packages 指定一个坐标(如 org.apache.spark:spark-sql_2.11:2.4.0),spark-submit 会解析这个坐标并尝试从已知的 Maven 仓库中下载相应的 JAR 文件及其依赖项。如果默认的中央仓库不可用或者速度较慢,你可能会遇到下载失败或超时的情况。
在某些情况下,你可能需要配置额外的 Maven 仓库,比如你的组织有自己的私有仓库,或者你需要从其他公共仓库(如 JCenter,虽然它已经宣布停止服务)下载依赖。在这种情况下,你可以通过 --repositories 选项来指定其他仓库的位置。不过需要注意的是,–repositories 主要是为了支持 Ivy 构建工具,而在使用 Maven 坐标时,通常不需要显式指定仓库位置。

–jars 参数则用于直接指定 .jar 文件的位置(可以是本地文件系统上的位置,也可以是 HDFS 或其他分布式文件系统的 URL)。这通常用于那些没有通过 Maven 发布的库,或者是你想要显式地控制版本和位置的库。

或者在用spark-submit命令提交的时候通过–jars或–package引入

  1. 拷贝 iceberg 的 jar 包到 Spark 的 jars 目录
    这种是推荐的方式,后续用的时候就不用每次都需要引入了
    cp /opt/software/iceberg/iceberg-spark-runtime-3.x_2.12-1.x.0.jar
    /opt/module/spark-3.x.x/jars
    

catalog_47">配置catalog

Spark 中支持两种 Catalog 的设置:hive 和 hadoop,Hive Catalog 就是 Iceberg 表存储使用 Hive 默认的数据路径,Hadoop Catalog 需要指定 Iceberg格式表存储路径。

使用Hive Catalog这意味着你可以使用 Hive 元数据存储来管理 Iceberg 表的元数据。这使得 Iceberg 表能够与现有的 Hive 生态系统集成。因此也是我们最常用的Catalog。

  1. spark配置文件中配置(推荐)

    vim spark-defaults.conf
    

Schema和Catalog区别

  1. schema
    在 Iceberg 中,Schema 描述了表的结构,包括字段名、类型以及可选的注释等信息。简而言之,Schema 定义了表的列结构及其数据类型。例如,一个简单的 Schema 可能定义了一个表包含 id(整型)、name(字符串类型)和 timestamp(时间戳类型)等字段。当数据写入到表中时,必须遵循该表的 Schema

  2. Catalog 在 Iceberg 中扮演的是元数据管理的角色。它负责存储关于表的所有元数据信息,包括表的位置、Schema、分区策略等。你可以把 Catalog 想象成一个数据库管理系统,它跟踪所有的表和相关的元数据信息。通过 Catalog,你可以创建、删除表,也可以查询表的元数据。

    一个 Catalog 可能会连接到不同的存储后端,比如 Hadoop 分布式文件系统(HDFS)、S3 或其他对象存储服务。Iceberg 支持多种 Catalog 类型,包括 Hive Metastore、Hadoop Catalog 等,这使得 Iceberg 能够灵活地集成到现有的大数据环境中。

总结

这部分内容中我们我们主要了解icebergspark整合时的各种参数配置。这里总结几个最常用的catalog相关参数:

  • spark.sql.catalog.iceberg
    其实这个配置有两个对应值
    (1)org.apache.iceberg.spark.SparkCatalog
    这个是最常用的,包含hive和hadoop两种catalog类型,而我们为了能继续使用历史hive表的数据,因此这里大部分都选择hive catalog
    (2)org.apache.iceberg.spark.SparkSessionCatalog
    这种用的较少,将iceberg catalog添加到spark内置的catalog中。

  • spark.sql.catalog.iceberg.type
    我们catalog上面选择了org.apache.iceberg.spark.SparkCatalog,而这下面又分为hive和hadoop,我们上面也说了,就选hive即可。

  • spark.sql.catalog.iceberg.warehouse
    这个是我们数据存储目录,指定即可。

  • spark.sql.extensions
    iceberg0.11.0和更高版本为Spark添加了一个扩展模块,以添加新的SQL命令,如调用存储过程或ALTER TABLE…按顺序写。
    使用这些SQL命令需要使用以下Spark属性将Iceberg扩展添加到Spark环境中:
    在这里插入图片描述
    所以这个参数也直接配置即可。

最终参数就可以如下:

 SparkSession spark = SparkSession.builder().appName("appName").config("spark.sql.catalog.iceberg", "org.apache.iceberg.spark.SparkCatalog").config("spark.sql.catalog.iceberg.type", "hive").config("spark.sql.catalog.iceberg.warehouse", "hdfs://nameservice/warehouse/hive").config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions").getOrCreate();

http://www.ppmy.cn/news/1521936.html

相关文章

【华为OD】2024D卷——剩余银饰的重量

题目描述&#xff1a; 有N块二手市场收集的银饰&#xff0c;每块银饰的重量都是正整数&#xff0c;收集到的银饰会被熔化用于打造新的饰品。 每一回合&#xff0c;从中选出三块最重的银饰&#xff0c;然后一起熔掉。 假设银饰的重量分别为x、y和z&#xff0c;且x<y<z。那…

如何防止IP地址被篡改

1. 强化网络安全基础设施 使用防火墙和入侵检测系统&#xff08;IDS&#xff09;&#xff1a;部署防火墙可以过滤掉未授权的网络流量&#xff0c;而IDS 则能够实时监控网络活动&#xff0c;检测并阻止任何异常或可疑行为&#xff0c;包括IP地址的篡改尝试。 配置安全路由器和…

oracle 清空表数据、

在 Oracle 数据库中&#xff0c;清空表数据可以通过以下几种方式实现&#xff1a; 1. 使用 TRUNCATE 语句 TRUNCATE 语句是最快的方式来删除表中的所有数据。它会删除所有行&#xff0c;并且不记录每行删除的详细信息&#xff0c;因此速度比 DELETE 语句快。它还会释放表的空…

相机常见名词详解

本文主要参考超人视觉课程做的笔记&#xff0c;有讲解不太懂的&#xff0c;又做了详细的解释 1、物距&#xff1a;物体到镜片的距离&#xff1b; 2、像距&#xff1a;像到镜片的距离&#xff1b; 3、焦距&#xff1a;镜片到焦点的距离&#xff1b; (1)二倍焦距以外&#xff…

CosyVoice:开源强大的 AI 语音合成工具

在当今科技飞速发展的时代&#xff0c;AI 语音合成技术正逐渐改变着我们的生活。今天&#xff0c;就为大家介绍一款卓越的语音合成工具——CosyVoice。 一、安装步骤 克隆和安装&#xff1a; 克隆仓库&#xff1a;git clone --recursive https://github.com/FunAudioLLM/Cos…

滑块验证是否人机

效果图&#xff1a; 原理&#xff1a; 使用阿里第三方验证插件js生成滑块&#xff0c;默认获取验证码按钮为不可点击属性 .getyzm{pointer-events: none;cursor: default;} 再添置一个可点击属性的类 .getyzmok{color: #000000 !important;pointer-events: visible;} 当滑块滑动…

Elasticsearch检索原理

Elasticsearch 的检索原理主要基于其内部使用的倒排索引结构&#xff0c;以及诸如BM25等相关性评分算法。 查询解析 当用户提交查询时&#xff0c;Elasticsearch 接收和解析该请求&#xff0c;包括确定查询类型&#xff08;如Match、Bool、Term等&#xff09;和相关字段。解析…

vsstudio2019,windows平台,使用DeviceIOControl向大容量存储设备发起SCSI通信,读写其扇区,绕过文件系统的排查;

源码&#xff1a; 电脑插入U盘&#xff0c;为物理驱动器3 如下使用DeviceIOControl发送MSC类规定的SCSI通信指令中 读指令&#xff08;0x28&#xff09; 指定读0扇区&#xff0c;读1长度的扇区&#xff0c;一共长度为512字节 #include <windows.h> #include <std…

SprinBoot+Vue停车场管理微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…

Maven 深入指南:构建自动化与项目管理的艺术

目录 1.引言 2.Maven 的核心概念 2.1 POM&#xff08;Project Object Model&#xff09; 2.2 依赖管理 2.3 生命周期 2.4 插件和目标 3.Maven 的安装与配置 3.1 安装 Maven 3.2 配置 settings.xml 4.Maven 的使用 4.1 创建项目 4.2 构建项目 4.3 运行测试 4.4 部…

exceljs操作手册

ExcelJS 读取&#xff0c;操作并写入电子表格数据和样式到 XLSX 和 JSON 文件。 一个 Excel 电子表格文件逆向工程项目。 安装 npm install exceljs新的功能! Merged fix: styles rendering in case when “numFmt” is present in conditional formatting rules (resolves…

计算机网络 数据链路层2

ALOHA:想发就发 CSMA 载波监听多路访问协议 CS&#xff1a;载波监听&#xff0c;在发送数据之前检测总线上是否有其他计算机在发送数据 1-坚持CSMA:主机想发送消息&#xff0c;需要监听信道&#xff1b; 信道空闲则直接传输信息&#xff1b; 信道忙碌则一直监听&#xff0c;直…

腾讯云 Spring Boot 安装 SSL 证书

linux和windows下&#xff0c;因为有ngxin&#xff0c;所以安装ssl证书都感觉比较容易&#xff0c;毕竟通过代理方式能够胜任大多数的https安全问题。 但是有些情况下&#xff0c;ngxin可能无法安装什么的&#xff0c;可能需要在spring boot下直接安装ssl&#xff0c;咋办&…

k8s之HPA实践——实现Web服务器的自动伸缩特性

文章目录 在生产环境中&#xff0c;总会有一些意想不到的事情发生&#xff0c;比如公司网站流量突然升高&#xff0c;此时之前创建的Pod已不足以支撑所有的访问&#xff0c;而运维人员也不可能24小时守着业务服务&#xff0c;这时就可以通过配置HPA&#xff0c;实现负载过高的情…

JVM 的类加载机制和双亲委派机制

1.基本概念&#xff1a; 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;类加载机制是其核心组成部分之一&#xff0c;它负责将类&#xff08;.class文件&#xff09;加载到JVM的方法区内&#xff0c;并在需要时初始化这些类。本文将深入探讨JVM的类加载机制&#xff0…

如何把自动获取的ip地址固定

在大多数网络环境中&#xff0c;‌设备通常会自动从DHCP服务器获取IP地址。‌这种动态分配IP的方式虽然灵活方便&#xff0c;‌但在某些特定场景下&#xff0c;‌我们可能需要将设备的IP地址固定下来&#xff0c;‌以确保网络连接的稳定性和可访问性。‌本文将详细介绍如何把自…

SpringCloud之Sleuth(Micrometer)+ZipKin分布式链路追踪

&#xff08;学习笔记&#xff09; 1、分布式链路追踪概述 问题&#xff1a;在微服务框架中&#xff0c;一个由客户端发起的请求在后端系统中会经过多个不同的的服务节点调用来协同产生最后的请求结果&#xff0c;每一个前段请求都会形成一条复杂的分布式服务调用链路&#xf…

2024最新技术!使用Golang Beego开发的社区老人健康管理系统,Vue前端交互流畅,大数据分析助力健康趋势预测

&#x1f34a;作者&#xff1a;计算机毕设匠心工作室 &#x1f34a;简介&#xff1a;毕业后就一直专业从事计算机软件程序开发&#xff0c;至今也有8年工作经验。擅长Java、Python、微信小程序、安卓、大数据、PHP、.NET|C#、Golang等。 擅长&#xff1a;按照需求定制化开发项目…

TFT液晶面板中应用的高度集成的电源管理芯片(PMIC)-iML1942

TFT&#xff08;彩色液晶屏&#xff09;是指薄膜晶体管&#xff0c;意即每个液晶像素点都是由集成在像素点后面的薄膜晶体管来驱动&#xff0c;从而可以做到高速度、高亮度、高对比度显示屏幕信息&#xff0c;是较好的LCD彩色显示设备之一&#xff0c;其效果接近CRT显示器&…

通过API方式访问llama3

一、安装Ollama&#xff0c;在上一篇文章中已经详细介绍如何安装Ollama Ollama安装好&#xff0c;就是下面的界面&#xff1a; 二、从Ollama中获得接口地址 三、从通过命令行窗口&#xff0c;访问llama3 API curl http://localhost:11434/api/generate -d {"model":…