【Iceberg分析】Iceberg 1.6.1 源码使用IDEA本地编译

ops/2024/10/18 12:11:20/

Iceberg 1.6.1 源码使用IDEA本地编译

文章目录

  • Iceberg 1.6.1 源码使用IDEA本地编译
    • 下载
    • 文件配置调整
      • gradle相关
      • 修改bulid.gradle
      • gradle.properties
      • 在IDEA上构建
      • 编译打包
    • 可能出现的问题
    • 彩蛋
      • 与Spark部署
      • Spark与Iceberg集成部署

下载

网络条件允许的情况下,使用git直接克隆,命令git clone https://github.com/apache/iceberg.git

如果网络情况不好,可以使用腾讯的软件源,下载地址:apache-iceberg-1.6.1.tar.gz

下载 gradle-8.9-bin.zip

文件配置调整

解压压缩过后,不要直接使用IDEA打开,需要天调整一些文件

gradle相关

gradle-wrapper.properties

distributionUrl=file:///D:/backup/gradle/InstallationPackage/gradle-8.9-bin.zip

修改bulid.gradle

使用aliyun的gardle仓库

buildscript内中的部分

  repositories {mavenLocal()maven {url 'https://maven.aliyun.com/repository/gradle-plugin'}gradlePluginPortal()}

allprojects内中的部分

allprojects {group = "org.apache.iceberg"version = projectVersionrepositories {maven {url 'https://maven.aliyun.com/repository/public/'}maven {url 'https://maven.aliyun.com/repository/central'}def REPOSITORY_URL = 'https://maven.aliyun.com/repository/public'all {ArtifactRepository repo ->if (repo instanceof MavenArtifactRepository) {def url = repo.url.toString()if (url.startsWith('https://artifacts.elastic.co/maven')|| url.startsWith('https://repo1.maven.org/maven2')|| url.startsWith('https://repo.maven.org/maven2')|| url.startsWith('https://jcenter.bintray.com/')|| url.startsWith('https://repo.maven.apache.org/maven2')) {project.logger.lifecycle "Repository ${repo.url} replaced by $REPOSITORY_URL."remove repo}}}mavenLocal()mavenCentral()}
}

gradle.properties

目前里面支持的集成组件的版本。将sparkversion的版本改为3.4

systemProp.defaultSparkVersions=3.4

在IDEA上构建

使用IntelliJ IDEA 2024.1.2 打开项目apache-iceberg-1.6.1,进行Gradle项目加载。或者使用快捷键进行构建。 构建Ctrl + F9

在这里插入图片描述

编译打包

在linux环境中进行编译打包

./gradlew build -x test -x integrationTest

可能出现的问题

  1. 错误信息git clone时显示 RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8)
19057578@CNHQ-19057578N MINGW64 /d/code
$ git clone https://github.com/apache/iceberg.git
Cloning into 'iceberg'...
remote: Enumerating objects: 151733, done.
remote: Counting objects: 100% (2690/2690), done.
remote: Compressing objects: 100% (604/604), done.
error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly: CANCEL (err 8)
error: 6642 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: early EOF
fatal: fetch-pack: invalid index-pack output

很可能是由于HTTP/2通信协议导致的问题

Git和底层的curl库可能在处理HTTP/2协议时遇到问题,尤其是在某些网络配置或特定的服务器实现上。尝试强制Git使用HTTP/1.1来绕开这个问题

git config --global http.version HTTP/1.1
  1. gradle wapper下载失败
curl: (28) Failed to connect to raw.githubusercontent.com port 443 after 63120 ms: Couldn't connect to server
▒▒▒▒: ▒Ҳ▒▒▒▒▒▒޷▒▒▒▒▒▒▒▒▒ org.gradle.wrapper.GradleWrapperMain

网络问题,不行就用手机热点

彩蛋

与Spark部署

采用Spark On Yarn运行架构,使用Yarn-Cluster模式。

  1. spark打包后的tgz包解压

  2. 将解压后的文件夹spark-3.4.2-bin-2.9.1.1中的子文件jars文件夹中内容重新打包成zip,然后上传至HDFS。得到对应的HDFS路径。

    cd /home/spark/spark-3.4.2-bin-2.9.1.1/jars;
    zip -r jars.zip ./*
    hadoop fs -put -f /home/spark/spark-3.4.2-bin-2.9.1.1/jars hdfs:///user/spark/spark-3.4.2/ 
    
  3. spark的默认配置文件spark-3.4.2-bin-2.9.1.1/conf/spark-defaults.conf进行修改,增加配置项spark.yarn.archive,其值改为上面的zip包的HDFS路径。

    # config for spark.yarn
    spark.yarn.archive hdfs:///user/bigdata/spark-3.4.2.1-bin-2.9.1.1/jars.zip
    

Spark与Iceberg集成部署

采用Spark On Yarn运行架构,使用Yarn-Cluster模式。

  1. spark打包后的spark-2.3.4-bin-2.9.2.tgz包解压

  2. iceberg-spark-runtime-3.4_2.12.jar复制进,解压后的文件夹spark-3.4.2-bin-2.9.1.1中的子文件jars文件夹

  3. 将解压后的文件夹spark-3.4.2-bin-2.9.1.1中的子文件jars文件夹中内容重新打包成zip,然后上传至HDFS。得到对应的HDFS路径。

    cd /home/spark/spark-3.4.2-bin-2.9.1.1/jars;
    zip -r jars.zip ./*
    hadoop fs -put -f /home/spark/spark-3.4.2-bin-2.9.1.1/jars hdfs:///user/spark/spark-3.4.2/ 
    
  4. spark的默认配置文件spark-3.4.2-bin-2.9.1.1/conf/spark-defaults.conf进行修改,增加配置项spark.yarn.archive,其值改为上面的zip包的HDFS路径。

    # config for spark.yarn
    spark.yarn.archive hdfs:///user/bigdata/spark-3.4.2.1-bin-2.9.1.1/jars.zip
    

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

相关文章

智慧船舶物联网实训室建设方案

第一章 建设背景 随着全球海洋经济的蓬勃发展与智能化技术的日新月异,数字船舶物联网(Internet of Things for Maritime, IoT-Maritime)与人工智能(Artificial Intelligence, AI)的结合已成为推动航运业转型升级的关键…

浏览器缓存

问题 每次发布 web 项目新的版本后, 在浏览器中打开项目时, 不清除浏览器缓存, 无法获取最新页面。 原因 为了减少资源请求次数,加快资源访问速度, 浏览器会对资源文件如图片 、css 文件、 js 文件等进行缓存&#xff…

《深度学习》Dlib、OpenCV 关键点定位 原理及案例解析

目录 一、关键点定位 1、什么是关键点定位 2、步骤 1)加载预训练的人脸检测器 2)加载预训练的关键点检测器 3)读取图像 4)检测人脸 5)关键点检测 6)可视化关键点 7)显示图像 二、案例…

关于武汉芯景科技有限公司的限流开关芯片XJ6288开发指南(兼容SY6288)

一、芯片引脚介绍 1.芯片引脚 二、系统结构图 三、功能描述 1.EN引脚控制IN和OUT引脚的通断 2.OCB引脚指示状态 3.过流自动断开

【解决】webstrom uniapp rpx格式化空格 报错飘红

解决办法 1、安装 wechat mini program support 插件 2. 设置 wechat mini program 里小程序支持选为启用 3. 重新格式化显示正常&#xff0c;也不飘红了 注意要style开启scss支持lang"scss"&#xff0c;否则也会飘红报错 <style lang"scss"><…

使用Python在Jupyter Notebook中显示Markdown文本

使用Python在Jupyter Notebook中显示Markdown文本 引言1. 导入必要的模块2. 定义一个函数来显示Markdown文本3. 使用print_md函数显示Markdown文本4. 总结 引言 作为一名Python初级程序员&#xff0c;你可能已经熟悉了Jupyter Notebook这个强大的工具。Jupyter Notebook不仅支…

【AIGC】AI如何匹配RAG知识库: Embedding实践,语义搜索

引言 RAG作为减少模型幻觉和让模型分析、回答私域相关知识最简单高效的方式&#xff0c;我们除了使用之外可以尝试了解其是如何实现的。在实现RAG的过程中Embedding是非常重要的手段。本文将带你简单地了解AI工具都是如何通过Embedding去完成语义分析匹配的。 Embedding技术简…

【系统架构设计师】案例专题六(8大系统架构设计之8): 大数据架构设计考点梳理

更多内容请见: 备考系统架构设计师-核心总结目录 文章目录 一、传统数据处理系统存在的问题二、大数据处理系统架构分析1、大数据处理系统面临挑战2、大数据处理系统架构特征三、Lambda架构1、Lambda架构对大数据处理系统的理解2、Lambda架构应用场景3、Lambda架构介绍4、Lamb…