云服务器内容精选

  • 约束 支持在Hudi客户端执行Spark SQL操作Hudi。 支持在Spark2x的JD BCS erver中执行Spark SQL操作Hudi。 不支持在Spark2x的客户端执行Spark SQL操作Hudi,支持在Spark3.1.1及之后版本的客户端执行Spark SQL操作Hudi。 不支持在Hive、Hetu引擎中写hudi表,以及修改hudi表结构,仅支持读。 由于SQL的KeyGenerator默认是org.apache.hudi.keygen.ComplexKeyGenerator,要求DataSource方式写入时KeyGenerator与SQL设置的一致。
  • 使用约束 新增列在设置默认值前,如果数据已经进行了重写,则查询历史数据不支持返回列的默认值,返回NULL。数据入库、更新、执行Compaction、Clustering都会导致部分或全部数据重写。 列的默认值设置要与列的类型一致,如不一致会进行类型强转,导致默认值精度丢失或者默认值为NULL。 历史数据的默认值与列第一次设置的默认值一致,多次修改列的默认值不会影响历史数据的查询结果。 设置默认值后rollback不能回滚默认值配置。 Spark SQL暂不支持查看列默认值信息,可以通过执行show create table SQL查看。 不支持默认缺省列的写入方式,写入时必须指定列名。
  • 示例 SQL语法具体参考 DLI Hudi SQL语法参考章节。 示例: 建表指定列默认值 create table if not exists h3(id bigint,name string,price double default 12.34) using hudioptions (primaryKey = 'id',type = 'mor',preCombineField = 'name'); 添加列指定列默认值 alter table h3 add columns(col1 string default 'col1_value');alter table h3 add columns(col2 string default 'col2_value', col3 int default 1); 修改列默认值 alter table h3 alter column price set default 14.56; 插入数据使用列默认值,需要指定写入的列名,和插入的数据一一对应 insert into h3(id, name) values(1, 'aaa');insert into h3(id, name, price) select 2, 'bbb', 12.5;