Hudi + Spark3入门第一课

2022-05-31  本文已影响0人  朝朝Mumu

欢迎访问我的博客

Hudi + Spark3入门第一课

Apache Hudi 是下一代流数据湖平台。Apache Hudi 将数仓和数据库核心功能迁移到数据湖。Hudi 提供表、 事务、高效的 upserts/deletes、高级索引、 流式摄取、数据集群/压缩优化和并发,同时将数据使用开源文件格式。

hudi 0.10.1源码编译

之前的hudi 0.9.0 版本在和spark3.1一起使用时有明显的问题,可以和spark3.0.3搭配使用。当然,这在hudi的发版说明里也有提及。

这两个包不用自己编译,可以从maven中央仓库获取,(页面很不好找,hudi得把仓库类目梳理一下了)贴一下。

# 3.1.2版本
<!-- https://mvnrepository.com/artifact/org.apache.hudi/hudi-spark3.1.2-bundle -->
<dependency>
    <groupId>org.apache.hudi</groupId>
    <artifactId>hudi-spark3.1.2-bundle_2.12</artifactId>
    <version>0.10.1</version>
</dependency>

# 3.0.3版本
<!-- https://mvnrepository.com/artifact/org.apache.hudi/hudi-spark3.0.3-bundle -->
<dependency>
    <groupId>org.apache.hudi</groupId>
    <artifactId>hudi-spark3.0.3-bundle_2.12</artifactId>
    <version>0.10.1</version>
</dependency>

使用上述预编译的包,就省略自己编译的过程了。

官网发布的支持矩阵:

Spark 3 Support Matrix

Hudi 支持的 Spark 3 版本
0.10.0 - 0.10.1 3.1.x (default build), 3.0.x
0.7.0 - 0.9.0 3.0.x
0.6.0 and prior 不支持

可以看到hudi 0.10版本默认构建出来是spark3.1的,也可以构建spark3.0的。

测试步骤

环境信息

  1. 已安装了Spark3.1.1
  2. 已安装Hive3.1
  3. 操作系统:CentOS 7.4
  4. Java 8

Spark3快速测试

  1. 把hudi jar拷贝到spark安装目录的jars中,例如

    cp hudi-spark3.1.1-bundle_2.12-0.10.1.jar /usr/hdp/3.0.1.0-187/spark3/jars
    
  2. 启动spark-sql客户端看看是否正常:

    • 因为我们已经把hudi-spark的jar放入spark的jar包加载路径中,我们无需再显式指定它。

    • 此外,如果有报权限类的错误,可以切换有访问hive权限的用户,这里是使用hive用户执行的操作。

    ./bin/spark-sql --master yarn --conf 'spark.serializer=org.apache.spark.serializer.KryoSerializer' --conf 'spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension'
    
  3. 显示 > 等待输入命令即可!(这时我还没有拷贝avro的包,也没有报错。)

  4. 创建一张不分区的hudi表:

    默认就是cow格式的表,默认主键是uuid,没有预聚合字段。

    create table hudi_cow_nonpcf_tbl (
      uuid int,
      name string,
      price double
    ) using hudi;
    
  5. 查看表:show tables,可以看到一行刚才的表名:default hudi_table0 false

  6. 给表插入2条数据:

    insert into hudi_table0 select 1, 'my name is kiki', 20;
    insert into hudi_table0 select 2, 'qiqi', 16;
    
  1. 查询刚才的数据:

    select * from hudi_table0;
    ……
    
    Time taken 0.361 seconds,Fetched 2 row(s)
    
  1. 小试牛刀,ok。
上一篇 下一篇

猜你喜欢

热点阅读