更新时间:2025-12-26 GMT+08:00
分享

使用Spark SQL操作Hudi表

操作场景

在MRS集群中,Hudi集成在Spark中,为数据处理提供了强大的支持。通过这种集成,用户不仅能够利用Spark SQL创建Hudi表,还能高效地执行对Hudi表的增、删、改、查等操作。Hudi表的设计特别适合于需要频繁更新和查询的场景,如实时数据分析、数据仓库更新等,它能够确保数据的一致性和高效性,同时支持增量数据处理,大大提高了数据处理的灵活性和性能。

具体来说,通过Spark SQL操作Hudi表的过程包括但不限于以下几个方面:

  • 创建Hudi表:用户可以使用Spark SQL的DDL(数据定义语言)语句来定义和创建Hudi表,指定表的结构、存储格式、索引类型等参数。
  • 插入数据:支持批量插入和追加数据,Hudi的写入优化技术能够确保高效的数据写入,同时减少数据冗余。
  • 更新和删除数据:Hudi支持基于主键的记录级更新和删除操作,这在传统的大数据处理框架中是难以实现的。通过Spark SQL,用户可以轻松执行这些操作,确保数据的准确性和时效性。
  • 查询数据:Hudi表支持高效的查询操作,包括点查询、范围查询和聚合查询等。通过优化的索引机制,Hudi能够快速定位和检索数据,提高查询性能。

前提条件

如果集群已开启Kerberos认证,需在Manager界面创建1个人机用户并关联到hadoop和hive用户组,主组为hadoop,具体操作请参考创建MRS集群用户

约束与限制

本章节仅适用于MRS 3.5.0-LTS及之后版本。

操作步骤

  1. 下载并安装Hudi客户端,具体请参考安装MRS客户端章节。

    目前Hudi集成在Spark中,用户从Manager页面下载Spark客户端即可,例如客户端安装目录为:“/opt/client”。

  2. 使用root登录客户端安装节点,执行如下命令:

    进入客户端目录:
    cd /opt/hadoopclient

    执行以下命令加载环境变量:

    source bigdata_env
    source Hudi/component_env

    安全认证:

    kinit 创建的业务用户
    • 新创建的用户需要修改密码,更改密码后重新kinit登录。
    • 普通模式(未开启kerberos认证)无需执行kinit命令。
    • 多服务场景下,在source bigdata_env之后,请先source Spark服务的component_env,再去source Hudi的component_env。

  3. 执行spark-sql --master yarn启动spark-sql。
  4. 执行如下SQL操作Hudi表:

    • 创建Hudi表:
      create table if not exists hudi_table2 (id int,name string,price double)  using hudi options (type = 'cow',primaryKey = 'id',preCombineField = 'price');
    • 插入数据:
      insert into hudi_table2 select 1,1,1;
      insert into hudi_table2 select 2,1,1;
    • 更新数据:
      update hudi_table2 set name=3 where id=1;
    • 删除数据:
      delete from hudi_table2 where id=2;
    • 查询数据:
      select * from hudi_table2;

相关文档

更多Hudi SQL语法请参考Hudi SQL语法参考

相关文档