hudi搭建【大数据比赛长期更新】

这篇具有很好参考价值的文章主要介绍了hudi搭建【大数据比赛长期更新】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

hudi搭建

题目分析

本任务需要使用root用户完成相关配置,具体要求如下:
1、 从宿主机/opt目录下将maven相关安装包复制到容器Master中的/opt/software(若路径不存在,则需新建)中,将maven相关安装包解压到/opt/module/目录下(若路径不存在,则需新建)并配置maven本地库为/opt/software/RepMaven/,远程仓库使用阿里云镜像,配置maven的环境变量,并在/opt/下执行mvn
-v,将运行结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;

 <mirror>
     <id>nexus-aliyun</id>
     <mirrorOf>central</mirrorOf>
     <name>Nexus aliyun</name>
     <url>http://maven.aliyun.com/nexus/content/groups/public</url>
  </mirror>

要求:

  1. root用户完成
  2. 宿主机和docker容器文件的传输,使用docker cp命令
  3. 搭建maven,配置阿里云仓库

2、 从宿主机/opt目录下将Hudi相关安装包复制到容器Master中的/opt/software(若路径不存在,则需新建)中,将Hudi相关安装包解压到/opt/module/目录下(若路径不存在,则需新建),将命令复制并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;

要求:

  1. 宿主机和docker容器文件的传输,使用docker cp命令
  2. tar文件的解压

3、完成解压安装及配置后使用maven对Hudi进行构建(spark3.1,scala-2.12),编译完成后与Spark集成,集成后使用spark-shell操作Hudi,将spark-shell启动使用spark-shell运行下面给到的案例,并将最终查询结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下。
(提示:编译需要替换以下内容:
1.将父模块pom.xml替换;
2.hudi-common/src/main/java/org/apache/hudi/common/table/log/block/HoodieParquetDataBlock.java替换;
2. 将packaging/hudi-spark-bundle/pom.xml替换
3.将packaging/hudi-utilities-bundle/pom.xml替换

import org.apache.hudi.QuickstartUtils._
import scala.collection.JavaConversions._
import org.apache.spark.sql.SaveMode._
import org.apache.hudi.DataSourceReadOptions._
import org.apache.hudi.DataSourceWriteOptions._
import org.apache.hudi.config.HoodieWriteConfig._
import org.apache.hudi.common.model.HoodieRecord

val tableName = "hudi_trips_cow"
val basePath = "file:///tmp/hudi_trips_cow"
val dataGen = new DataGenerator

val inserts = convertToStringList(dataGen.generateInserts(10))
val df = spark.read.json(spark.sparkContext.parallelize(inserts, 2))
df.write.format("hudi").
  options(getQuickstartWriteConfigs).
  option(PRECOMBINE_FIELD_OPT_KEY, "ts").
  option(RECORDKEY_FIELD_OPT_KEY, "uuid").
  option(PARTITIONPATH_FIELD_OPT_KEY, "partitionpath").
  option(TABLE_NAME, tableName).
  mode(Overwrite).
  save(basePath)

val tripsSnapshotDF = spark.read.format("hudi").load(basePath + "/*/*/*/*")
tripsSnapshotDF.createOrReplaceTempView("hudi_trips_snapshot")
spark.sql("select fare, begin_lon, begin_lat, ts from  hudi_trips_snapshot where fare > 20.0").show()

要求:

  1. 配置hudi,题目中已经给出修改位置,并说明替换?比赛中服务器可能会给pom文件,选手只需要替换即可
  2. 使用maven对hudi进行构建,需注意使用spark和scala的版本
  3. hudi与spark的集成
  4. 使用spark-shell运行给定的案例

搭建部署

由于当前没有提供hudi-0.12版本的安装包,需要自己去官网去下载,解压完以后使用idea进行配置操作

  1. 修改中央仓库地址(hudi/pom.xml)
<repository>
      <id>nexus-aliyun</id>
      <name>nexus-aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
      <releases>
        <enabled>true</enabled>
      </releases>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
</repository>
  1. 修改版本(hudi/pom.xml)
 <hadoop.version>3.1.3</hadoop.version>
 <hive.version>3.1.2</hive.version>
  1. 修改代码兼容(\hudi-release-0.12.0\hudi-common\src\main\java\org\apache\hudi\common\table\log\block\HoodieParquetDataBlock.java)
    hudi安装部署,大数据,spark,java

  2. 安装kafka依赖到本地仓库(需要注意参数需要加引号),如依赖没有找到可以联系我

  1. common-config-5.3.4.jar
  2. common-utils-5.3.4.jar
  3. kafka-avro-serializer-5.3.4.jar
  4. kafka-schema-registry-client-5.3.4.jar
mvn install:install-file "-DgroupId=io.confluent" "-DartifactId=common-config" "-Dversion=5.3.4" "-Dpackaging=jar -Dfile=./common-config-5.3.4.jar"
mvn install:install-file "-DgroupId=io.confluent" "-DartifactId=common-utils" "-Dversion=5.3.4" "-Dpackaging=jar -Dfile=./common-utils-5.3.4.jar"
mvn install:install-file "-DgroupId=io.confluent" "-DartifactId=kafka-avro-serializer" "-Dversion=5.3.4" "-Dpackaging=jar -Dfile=./kafka-avro-serializer-5.3.4.jar"
mvn install:install-file "-DgroupId=io.confluent" "-DartifactId=kafka-schema-registry-client" "-Dversion=5.3.4" "-Dpackaging=jar -Dfile=./kafka-schema-registry-client-5.3.4.jar"
  1. 修改hudi-spark-bundle的pom文件
hudi-0.12.0/packaging/hudi-spark-bundle/pom.xml 

<!-- Hive -->

    <dependency>

      <groupId>${hive.groupid}</groupId>

      <artifactId>hive-service</artifactId>

      <version>${hive.version}</version>

      <scope>${spark.bundle.hive.scope}</scope>

      <exclusions>

        <exclusion>

          <artifactId>guava</artifactId>

          <groupId>com.google.guava</groupId>

        </exclusion>

        <exclusion>

          <groupId>org.eclipse.jetty</groupId>

          <artifactId>*</artifactId>

        </exclusion>

        <exclusion>

          <groupId>org.pentaho</groupId>

          <artifactId>*</artifactId>

        </exclusion>

      </exclusions>

    </dependency>

    <dependency>

      <groupId>${hive.groupid}</groupId>

      <artifactId>hive-service-rpc</artifactId>

      <version>${hive.version}</version>

      <scope>${spark.bundle.hive.scope}</scope>

    </dependency>

    <dependency>

      <groupId>${hive.groupid}</groupId>

      <artifactId>hive-jdbc</artifactId>

      <version>${hive.version}</version>

      <scope>${spark.bundle.hive.scope}</scope>

      <exclusions>

        <exclusion>

          <groupId>javax.servlet</groupId>

          <artifactId>*</artifactId>

        </exclusion>

        <exclusion>

          <groupId>javax.servlet.jsp</groupId>

          <artifactId>*</artifactId>

        </exclusion>

        <exclusion>

          <groupId>org.eclipse.jetty</groupId>

          <artifactId>*</artifactId>

        </exclusion>

      </exclusions>

    </dependency>

    <dependency>

      <groupId>${hive.groupid}</groupId>

      <artifactId>hive-metastore</artifactId>

      <version>${hive.version}</version>

      <scope>${spark.bundle.hive.scope}</scope>

      <exclusions>

        <exclusion>

          <groupId>javax.servlet</groupId>

          <artifactId>*</artifactId>

        </exclusion>

        <exclusion>

          <groupId>org.datanucleus</groupId>

          <artifactId>datanucleus-core</artifactId>

        </exclusion>

        <exclusion>

          <groupId>javax.servlet.jsp</groupId>

          <artifactId>*</artifactId>

        </exclusion>

        <exclusion>

          <artifactId>guava</artifactId>

          <groupId>com.google.guava</groupId>

        </exclusion>

      </exclusions>

    </dependency>

    <dependency>

      <groupId>${hive.groupid}</groupId>

      <artifactId>hive-common</artifactId>

      <version>${hive.version}</version>

      <scope>${spark.bundle.hive.scope}</scope>

      <exclusions>

        <exclusion>

          <groupId>org.eclipse.jetty.orbit</groupId>

          <artifactId>javax.servlet</artifactId>

        </exclusion>

        <exclusion>

          <groupId>org.eclipse.jetty</groupId>

          <artifactId>*</artifactId>

        </exclusion>

      </exclusions>

</dependency>

    <!-- 增加hudi配置版本的jetty -->

    <dependency>

      <groupId>org.eclipse.jetty</groupId>

      <artifactId>jetty-server</artifactId>

      <version>${jetty.version}</version>

    </dependency>

    <dependency>

      <groupId>org.eclipse.jetty</groupId>

      <artifactId>jetty-util</artifactId>

      <version>${jetty.version}</version>

    </dependency>

    <dependency>

      <groupId>org.eclipse.jetty</groupId>

      <artifactId>jetty-webapp</artifactId>

      <version>${jetty.version}</version>

    </dependency>

    <dependency>

      <groupId>org.eclipse.jetty</groupId>

      <artifactId>jetty-http</artifactId>

      <version>${jetty.version}</version>

    </dependency>
  1. 修改hudi-utilities-bundle的pom文件
hudi-0.12.0/packaging/hudi-utilities-bundle/pom.xml

  <!-- Hoodie -->

    <dependency>

      <groupId>org.apache.hudi</groupId>

      <artifactId>hudi-common</artifactId>

      <version>${project.version}</version>

      <exclusions>

        <exclusion>

          <groupId>org.eclipse.jetty</groupId>

          <artifactId>*</artifactId>

        </exclusion>

      </exclusions>

    </dependency>

    <dependency>

      <groupId>org.apache.hudi</groupId>

      <artifactId>hudi-client-common</artifactId>

      <version>${project.version}</version>

      <exclusions>

        <exclusion>

          <groupId>org.eclipse.jetty</groupId>

          <artifactId>*</artifactId>

        </exclusion>

      </exclusions>

    </dependency>

<!-- Hive -->

    <dependency>

      <groupId>${hive.groupid}</groupId>

      <artifactId>hive-service</artifactId>

      <version>${hive.version}</version>

      <scope>${utilities.bundle.hive.scope}</scope>

      <exclusions>

       <exclusion>

          <artifactId>servlet-api</artifactId>

          <groupId>javax.servlet</groupId>

        </exclusion>

        <exclusion>

          <artifactId>guava</artifactId>

          <groupId>com.google.guava</groupId>

        </exclusion>

        <exclusion>

          <groupId>org.eclipse.jetty</groupId>

          <artifactId>*</artifactId>

        </exclusion>

        <exclusion>

          <groupId>org.pentaho</groupId>

          <artifactId>*</artifactId>

        </exclusion>

      </exclusions>

    </dependency>

    <dependency>

      <groupId>${hive.groupid}</groupId>

      <artifactId>hive-service-rpc</artifactId>

      <version>${hive.version}</version>

      <scope>${utilities.bundle.hive.scope}</scope>

    </dependency>

    <dependency>

      <groupId>${hive.groupid}</groupId>

      <artifactId>hive-jdbc</artifactId>

      <version>${hive.version}</version>

      <scope>${utilities.bundle.hive.scope}</scope>

      <exclusions>

        <exclusion>

          <groupId>javax.servlet</groupId>

          <artifactId>*</artifactId>

        </exclusion>

        <exclusion>

          <groupId>javax.servlet.jsp</groupId>

          <artifactId>*</artifactId>

        </exclusion>

        <exclusion>

          <groupId>org.eclipse.jetty</groupId>

          <artifactId>*</artifactId>

        </exclusion>

      </exclusions>

    </dependency>

    <dependency>

      <groupId>${hive.groupid}</groupId>

      <artifactId>hive-metastore</artifactId>

      <version>${hive.version}</version>

      <scope>${utilities.bundle.hive.scope}</scope>

      <exclusions>

        <exclusion>

          <groupId>javax.servlet</groupId>

          <artifactId>*</artifactId>

        </exclusion>

        <exclusion>

          <groupId>org.datanucleus</groupId>

          <artifactId>datanucleus-core</artifactId>

        </exclusion>

        <exclusion>

          <groupId>javax.servlet.jsp</groupId>

          <artifactId>*</artifactId>

        </exclusion>

        <exclusion>

          <artifactId>guava</artifactId>

          <groupId>com.google.guava</groupId>

        </exclusion>

      </exclusions>

    </dependency>

    <dependency>

      <groupId>${hive.groupid}</groupId>

      <artifactId>hive-common</artifactId>

      <version>${hive.version}</version>

      <scope>${utilities.bundle.hive.scope}</scope>

      <exclusions>

        <exclusion>

          <groupId>org.eclipse.jetty.orbit</groupId>

          <artifactId>javax.servlet</artifactId>

        </exclusion>

        <exclusion>

          <groupId>org.eclipse.jetty</groupId>

          <artifactId>*</artifactId>

        </exclusion>

      </exclusions>

</dependency>

    <!-- 增加hudi配置版本的jetty -->

    <dependency>

      <groupId>org.eclipse.jetty</groupId>

      <artifactId>jetty-server</artifactId>

      <version>${jetty.version}</version>

    </dependency>

    <dependency>

      <groupId>org.eclipse.jetty</groupId>

      <artifactId>jetty-util</artifactId>

      <version>${jetty.version}</version>

    </dependency>

    <dependency>

      <groupId>org.eclipse.jetty</groupId>

      <artifactId>jetty-webapp</artifactId>

      <version>${jetty.version}</version>

    </dependency>

    <dependency>
      <groupId>org.eclipse.jetty</groupId>
      <artifactId>jetty-http</artifactId>
      <version>${jetty.version}</version>
    </dependency>

  1. 编译
mvn clean package "-DskipTests" "-Dspark3.1" "-Dscala-2.12" "-Dhadoop.version=3.1.3" "-Pflink-bundle-shade-hive3"
  1. packaging包下的每个模块的target目录下就是最终我们所需要的jar包

hudi安装部署,大数据,spark,java

  1. 将编译好的hudi-spark、hudi-hadoop包拷贝到spark安装目录的jars下
  2. 启动spark-shell,配置启动序列化参数
spark-shell --conf "spark.serializer=org.apache.spark.serializer.KryoSerializer"
  1. 将题目中给的案例直接复制到shell中运行

hudi安装部署,大数据,spark,java

欢迎一起交流,有问题欢迎指正!!文章来源地址https://www.toymoban.com/news/detail-734043.html

到了这里,关于hudi搭建【大数据比赛长期更新】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 04_Hudi 集成 Spark、保存数据至Hudi、集成Hive查询、MergeInto 语句

    本文来自\\\"黑马程序员\\\"hudi课程 4.第四章 Hudi 集成 Spark 4.1 环境准备 4.1.1 安装MySQL 5.7.31 4.1.2 安装Hive 2.1 4.1.3 安装Zookeeper 3.4.6 4.1.4 安装Kafka 2.4.1 4.2 滴滴运营分析 4.2.1 需求说明 4.2.2 环境准备 4.2.2.1 工具类SparkUtils 4.2.2.2 日期转换星期 4.2.3 数据ETL保存 4.2.3.1 开发步骤 4.2.3.2 加载CS

    2024年02月13日
    浏览(47)
  • Hudi Spark-SQL增量查询数据几种方式

    由于项目上主要用Hive查询Hudi,所以之前总结过一篇:Hive增量查询Hudi表。最近可能会有Spark SQL增量查询Hudi表的需求,并且我发现目前用纯Spark SQL的形式还不能直接增量查询Hudi表,于是进行学习总结一下。 先看一下官方文档上Spark SQL增量查询的方式,地址:https://hudi.apache.or

    2024年02月11日
    浏览(42)
  • Spark Standalone 模式的安装和部署 第1关: Standalone 分布式集群搭建

    我们已经掌握了 Spark 单机版安装,那么分布式集群怎么搭建呢? 接下来我们学习 Standalone 分布式集群搭建。 课程视频 如果你需要在本地配置 Spark 完全分布式环境,可以通过查看课程视频来学习。 课程视频《Spark配置文件设置》 Spark分布式安装模式 Spark 分布式环境安装目前

    2024年02月03日
    浏览(45)
  • 问题:Spark SQL 读不到 Flink 写入 Hudi 表的新数据,打开新 Session 才可见

    博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,京东购书链接:https://item.jd.com/12677623.html,扫描左侧

    2024年02月22日
    浏览(55)
  • Hudi(7):Hudi集成Spark之spark-sql方式

    目录 0. 相关文章链接 1. 创建表 1.1. 启动spark-sql 1.2. 建表参数 1.3. 创建非分区表 1.4. 创建分区表 1.5. 在已有的hudi表上创建新表 1.6. 通过CTAS (Create Table As Select)建表 2. 插入数据 2.1. 向非分区表插入数据 2.2. 向分区表动态分区插入数据 2.3. 向分区表静态分区插入数据 2.4

    2024年02月06日
    浏览(44)
  • spark集成hudi

    启动spark-shell 2 hudi内置数据生成器,生成10条json数据 3加载到DF,写入hudi,实现简单etl处理 4读取存储数据及注册临时表

    2024年02月07日
    浏览(34)
  • 【大数据监控】Grafana、Spark、HDFS、YARN、Hbase指标性能监控安装部署详细文档

    Grafana 是一款开源的数据可视化工具,使用 Grafana 可以非常轻松的将数据转成图表(如下图)的展现形式来做到数据监控以及数据统计。 解压 配置 mapping 文件 修改spark的metrics.properties配置文件,让其推送metrics到Graphite_exporter namenode.yaml datanode.yaml 配置 hadoop-env.sh yarn.yaml 配置 ya

    2023年04月21日
    浏览(59)
  • Hudi-集成Spark之spark-sql方式

    启动spark-sql 创建表 建表参数: 参数名 默认值 说明 primaryKey uuid 表的主键名,多个字段用逗号分隔。同 hoodie.datasource.write.recordkey.field preCombineField 表的预合并字段。同 hoodie.datasource.write.precombine.field type cow 创建的表类型: type = ‘cow’ type = \\\'mor’同 hoodie.datasource.write.table.ty

    2024年02月05日
    浏览(47)
  • 云计算集群搭建记录[Hadoop|Zookeeper|Hbase|Spark | Docker |OpenStack]更新索引 |动态更新

    为了能够更好的查看所更新的文章,讲该博文设为索引 为了解决在编辑文件等操作的过程中的权限问题,博主一律 默认采用 root 账户登录 对于初次安装的用户可以采用如下命令行: 另外推荐一款终端工具:Tabby,既能够连接自己的服务器,也能够连接自己本地的虚拟机,还

    2023年04月13日
    浏览(55)
  • Apache Hudi初探(十)(与spark的结合)--hudi的Compaction操作

    在之前的文章Apache Hudi初探(六)(与spark的结合) 中,我们没有过多的解释Spark中 hudi Compaction 的实现,在这里详细说一下 注意:在hudi中有同步,异步Compaction的概念,为了保证写入的及时性和数据读取的时效性,hudi在一步compaction的过程中会引入一个后台线程进行compaction,所以异

    2024年02月15日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包