华为云用户手册

  • 注意事项 写入模式:Hudi对于设置了主键的表支持三种写入模式,用户可以设置参数hoodie.sql.insert.mode来指定Insert模式,默认为upsert。 strict模式,Insert语句将保留COW表的主键唯一性约束,不允许重复记录。如果在插入过程中已经存在记录,则会为COW表执行HoodieDuplicateKeyException;对于MOR表,该模式与upsert模式行为一致。 non-strict模式,对主键表采用insert处理。 upsert模式,对于主键表的重复值进行更新操作。 在执行spark-sql时,用户可以设置“hoodie.sql.bulk.insert.enable = true”和“hoodie.sql.insert.mode = non-strict”来开启bulk insert作为Insert语句的写入方式。 也可以通过直接设置hoodie.datasource.write.operation的方式控制insert语句的写入方式,包括bulk_insert、insert、upsert。使用这种方式控制hoodie写入,需要注意执行完SQL后,必须执行reset hoodie.datasource.write.operation;重置Hudi的写入方式,否则该参数会影响其他SQL的执行。
  • 创建物化视图的“AS SELECT”的子句 创建物化视图的“AS SELECT”的子句不能包含calcite SQL解析和改写功能中的保留关键词,如“default”。如果想要在创建物化视图的“AS SELECT”子句中使用保留关键词,需要遵循以下的任一解决方案: 在创建MV和执行原始查询时,需给默认模式名称添加双引号 以在“AS SELECT”子句中使用保留关键词“default”为例: 创建物化视图 CREATE MATERIALIZED VIEW mv.default.mv1 WITH(storage_table='hive.default.mv11') AS SELECT id FROM hive."default".t1; SELECT查询 SELECT id FROM hive."default".t1; 在Session级别设置相应的catalog和schema,而不是在查询中传递完全限定的名称 以指定catalogname为“hive”,schemaname为“default”为例: USE hive.default; 创建物化视图 CREATE MATERIALIZED VIEW mv.default.mv1 WITH(storage_table='hive.default.mv11') AS SELECT id FROM t1; SELECT查询 SELECT id FROM t1;
  • DDL与DML并发 表2 支持的DDL与DML并发操作 DDL操作 insert into update delete set/reset add Y Y Y Y rename N N Y N change type N N Y N change comment Y Y Y Y drop N N Y N 执行不支持的DDL与DML并发操作时会发生异常“cannot evolution schema implicitly, actions such as rename, delete, and type change were found”。
  • DDL并发 表1 支持的DDL并发操作 DDL操作 add rename change type change comment drop add Y Y Y Y Y rename Y Y Y Y Y change type Y Y Y Y Y change comment Y Y Y Y Y drop Y Y Y Y N 对同一列并发执行DDL操作需要注意以下两点: 不能对同一列并发执行drop,否则只能成功执行第一个drop随后发生异常“java.lang.UnsupportedOperationException: cannot evolution schema implicitly, the column for which the update operation is performed does not exist.”。 drop与rename、change type和change comment并发执行时,drop必须是最后执行,否则只能执行drop以及drop之前的命令,执行drop之后的命令会发生异常“java.lang.UnsupportedOperationException: cannot evolution schema implicitly, the column for which the update operation is performed does not exist.”。
  • 操作场景 历史版本的HDFS使用了全局锁,读-写互斥,写-写互斥,即全局一把锁。但是实际上并非所有的读-写,写-写操作都会产生资源竞争。因此在该版本汇总引入了细粒度锁特性(FGL)。FGL对全局锁按照目录以及操作类型进行拆分,只有会产生资源竞争的操作才会使用同一个锁。因此极大地提升了写性能。 例如Client1和Client2同时对不相关的目录A、B进行写操作,此时对A和B的操作没有竞争关系,不会持有同一把锁,可以极大提升写性能。 该功能适用于 MRS 3.5.0及之后版本。
  • 参数说明 表1 HDFS参数说明 参数 参数说明 默认值 fs.obs.security.provider 指定获取访问OBS文件系统密钥的实现方式。 参数取值: com.huawei.mrs.MrsObsCredentialsProvider:通过MRS云服务委托获取凭证。 com.obs.services.EcsObsCredentialsProvider:通过E CS 云服务获取AK/SK信息。 com.obs.services.BasicObsCredentialsProvider:使用用户传入OBS的AK/SK信息。 com.obs.services.EnvironmentVariableObsCredentialsProvider:从环境变量中读取AK/SK信息。 com.huawei.mrs.MrsObsCredentialsProvider
  • HetuEngine智能物化视图概述 基于智能物化视图,HetuEngine可以提供智能预计算与缓存加速能力。HetuEngine QAS角色能够自动提取历史SQL语句进行分析学习,基于收益最大化原则自动生成高价值物化视图的候选SQL。在实际运用中,HetuEngine管理员可选择通过配置“维护实例”等,开启物化视图的自动创建与自动刷新功能。业务用户可以通过配置客户端Session来获得基于自动创建的物化视图的自动改写与提速。 该能力可以极大降低用户使用物化视图功能的使用难度,带来业务无感知的分析加速效果。HetuEngine管理员通过付出少量的计算资源和存储空间,可实现对高频SQL业务的智能加速。同时,该能力可以降低数据平台的整体负载(CPU、内存、IO等),有助于提升系统稳定性。 智能物化视图包括以下几个功能: 自动推荐物化视图 自动创建物化视图 自动刷新物化视图 自动删除物化视图
  • HetuEngine智能物化视图应用流程 图1 HetuEngine智能物化视图应用流程 表1 HetuEngine智能物化视图应用流程说明 阶段 说明 参考章节 开启物化视图推荐功能 开启物化视图推荐功能之后,QAS实例会根据用户的SQL执行记录自动推荐高价值的物化视图SQL,推荐的物化视图语句可在HSConsole界面的物化视图推荐页面查看,可参考查看物化视图推荐结果。 开启物化视图推荐功能 设置维护实例 设置计算实例为维护实例之后,维护实例会对物化视图推荐功能所推荐的物化视图SQL进行自动创建、刷新、删除等操作,所产生的自动化任务记录可在HetuEngine自动化任务页面查看,可参考查看HetuEngine物化视图自动化任务。 配置HetuEngine维护实例 启用物化视图改写能力 开启物化视图改写能力之后,HetuEngine会根据用户输入的SQL语句判断是否满足物化视图改写,将能匹配到物化视图的查询或者子查询转换为物化视图,避免了数据的重复计算。 配置HetuEngine物化视图改写能力
  • 前提条件 准备Hive UDF Jar包, 从CDL的安装目录复制“${BIGDATA_HOME}/ FusionInsight _CDL_*/install/FusionInsight-CDL-*/cdl/hive-checksum/cdl-dc-hive-checksum-*.jar”UDF Jar到Hive的“${BIGDATA_HOME}/third_lib/Hive”目录下,并设置该Jar包的权限为大于或等于750。 开启Kerberos认证的集群需已创建具有CDL管理操作权限的用户。如果当前集群开启了Ranger鉴权,还需参考添加Hive的Ranger访问权限策略章节授予用户Hive管理员权限和UDF操作权限。 使用具有Hive管理员权限的用户在Hive客户端创建全局的UDF算法: 创建CheckSum函数(在default数据库下执行): create function checksum_aggregate as 'com.huawei.hive.checksum.ChecksumUdaf' 创建比较任务之前一定要存在CDL同步任务,比较任务会在启动前感知同步任务的状态和数据同步情况来决定对哪些数据做比较。 数据比对关联的数据同步任务中的数据库用户需要对当前Schema具有create function权限。
  • 操作场景 数据比对即是对源端数据库中的数据和目标端Hive中的数据作数据一致性校验,如果数据不一致,CDL可以尝试修复不一致的数据。 当前数据对比任务支持手动全量任务比对。数据比对任务采用On Yarn的运行形态,比对结果会上传到HDFS目录。 数据比对目前仅支持基本数据类型比对, 不支持日期、时间戳、decimal、numeric、json等特殊数据类型的比对。 数据比对任务不支持数据表字段名包含数据库关键字的表进行数据比对。 数据比对任务单表比较仅支持100个以内的字段进行比较, 如果单表的字段超过一百, 可以分两次指定不同的比较字段的白名单进行数据比对。 当前只支持对从PgSQL抓取到Hudi的数据进行比对,如果“比较结果”为“不一致”,不一致的数据需小于或等于2000行才会生成报告地址;如果不一致的数据大于2000行,则不会生成报告地址,并且不支持修复数据。 参与比对的CDL任务kafka lag不为0时会导致比对结果不一致。
  • 读取Hudi数据概述 Hudi的读操作,作用于Hudi的三种视图之上,可以根据需求差异选择合适的视图进行查询。 Hudi支持多种查询引擎Spark、Hive、HetuEngine,具体支持矩阵见表1和表2。 表1 cow表 查询引擎 实时视图/读优化视图 增量视图 Hive Y Y Spark(SparkSQL) Y Y Spark(SparkDataSource API) Y Y HetuEngine Y N 表2 mor表 查询引擎 实时视图 增量视图 读优化视图 Hive Y Y Y Spark(SparkSQL) Y Y Y Spark(SparkDataSource API) Y Y Y HetuEngine Y N Y 当前Hudi使用Spark datasource接口读取时,不支持分区推断能力。比如bootstrap表使用datasource接口查询时,可能出现分区字段不显示,或者显示为null的情况。 增量视图,需设置set hoodie.hudicow.consume.mode = INCREMENTAL;,但该参数仅限于增量视图查询,不能用于Hudi表的其他类型查询,和其他表的查询。 恢复配置可设置set hoodie.hudicow.consume.mode = SNAPSHOT;或任意值。 父主题: Hudi读操作
  • HetuEngine SQL诊断功能介绍 HetuEngine QAS实例可对用户的SQL执行历史记录提供自动感知、自动学习、自动诊断服务,提升在线SQL运维能力,自动加速在线SQL分析任务,开启SQL诊断能力后,系统可实现如下能力: 自动感知并向集群管理员展现不同时间周期范围内的租户级、用户级的SQL任务统计,帮助集群管理员快速预判业务运行状态和潜在风险。 自动诊断出大SQL、慢SQL及相关提交信息,面向集群管理员多维度可视化呈现,同时提供大SQL、慢SQL的诊断与优化建议。 本章节适用于MRS 3.2.0及以后版本。
  • 回答 查询S3中的数据: select * from s3(path [,access_key_id, secret_access_key] [,format] [,structure]) path:带有文件路径的Bucket URL地址。 format:文件的格式。 access_key_id, secret_access_key:账号的长期凭证,可以使用凭证来对请求进行认证,参数是可选的。如果没有指定凭据,将从配置文件中读取凭据。 structure:表结构。 ClickHouse从S3中获取数据创建表: CREATE TABLE test1_s3 (name String, value UInt32) ENGINE = S3(path, [access_key_id, secret_access_key,] format) 查看创建好的表: select * from test1_s3
  • 参数说明 表1 JobGateway参数说明 参数 参数说明 默认值 HTTP_INSTANCE_PORT JobServer服务http端口。 默认值:29973 取值范围:29970~29979 HTTPS_INSTANCE_PORT JobServer服务https端口。 默认值:29972 取值范围:29970~29979 JAVA_OPTS 用于JVM的gc参数。需确保GC_OPT设置正确,否则进程启动会失败。 见页面默认配置。 job.record.batch.delete.count 25 JobServer每一批老化数据的条数。 job.record.expire.count 500000 JobServer老化数据的条数。 job.record.expire.day 7 JobServer作业过期的时间。 logging.level.org.apache.tomcat JobServer服务端tomcat日志的日志级别。 默认值:INFO 取值范围:DEBUG、INFO、WARN、ERROR、FATAL root.level JobServer服务端日志的日志级别。 默认值:INFO 取值范围:DEBUG、INFO、WARN、ERROR、FATAL NGINX_PORT JobBalancer服务通信端口。 默认值:https默认端口29970 http默认端口29971 取值范围:29970~29979 client_body_buffer_size 设置读取客户端请求正文的缓冲区大小。如果请求主体大于缓冲区,则将整个主体或仅将其部分写入临时文件。 默认值:10240 取值范围:大于0 client_body_timeout 定义读取客户端请求正文的超时时间。超时仅针对两次连续读取操作之间的一段时间设置,而不是针对整个请求主体的传输。如果客户端在此时间内未传输任何内容,则请求将终止并出现408(请求超时)错误。单位:秒。 默认值:60 取值范围:[1,86400] client_header_buffer_size 设置读取客户端请求标头的缓冲区大小。对于大多数请求,1K字节的缓冲区就足够了。但是,如果请求包含长cookie,或者来自WAP客户端,则它可能不适合1K。如果请求行或请求头字段不适合此缓冲区,则分配由large_client_header_buffers指令配置的更大缓冲区。 默认值:1024 取值范围:大于0 client_header_timeout 定义读取客户端请求标头的超时时间。如果客户端没有在这段时间内传输整个标头,请求将终止并出现408(请求超时)错误。 默认值:60 取值范围:[1,86400] client_max_body_size http请求体最大值,单位mb。 默认值:80 取值范围:1~10240 keepalive_requests 设置可以通过一个保持活动连接提供服务的最大请求数。在发出最大请求数后,连接将关闭。定期关闭连接对于释放每个连接的内存分配是必要的。因此,使用过高的最大请求数可能会导致过多的内存使用,因此不推荐使用。 默认值:1000 取值范围:[1,100000] keepalive_time 限制可以通过一个保持活动连接处理请求的最长时间。达到此时间后,将在后续请求处理后关闭连接。单位:秒。 默认值:3600 取值范围:[1,86400] keepalive_timeout 设置一个超时时间,在此期间保持活动的客户端连接将在服务器端保持打开状态。零值禁用保持活动的客户端连接。单位:秒。 默认值:75 取值范围:[0,86400] large_client_header_buffers.size 设置用于读取大型客户端请求标头的缓冲区的最大数量(large_client_header_buffers.number)和大小。一个请求行不能超过一个缓冲区的大小,否则会向客户端返回414(Request-URI Too Large)错误。请求头字段也不能超过一个缓冲区的大小,否则返回400(Bad Request)错误给客户端。缓冲区仅按需分配。如果在请求处理结束后连接转换为保持活动状态,则释放这些缓冲区。 默认值:4096 取值范围:大于0 lb_limit_req_burst 当大量请求过来时,超过访问频次限制的请求将会放到缓冲区,超过缓冲区大小的请求会返回503错误。 默认值:50 取值范围:1~1000 lb_limit_zone_rate http请求表示允许相同标识的客户端的访问频次,单位r/s、r/m。例如:30r/s,表示允许每秒访问30次。 默认值:30r/s 取值范围:1-100r/s或1-6000r/m lb_limit_zone_size http内存缓冲区的大小,单位mb。 默认值:20 取值范围:1~10240 lb_req_timeout Nginx读写的超时时间。 默认值:60s 取值范围:1~3600s proxy_connect_timeout 定义与代理服务器建立tcp连接的超时时间。使用数字和单位组合,m表示分钟,s表示秒。 默认值:3m 取值范围:1-60m或1-3600s proxy_timeout 与代理服务器的tcp连接上两次连续读取或写入操作之间的超时。如果在此时间内没有数据传输,则连接关闭。使用数字和单位组合,m表示分钟,s表示秒。 默认值:3m 取值范围:1-60m或1-3600s
  • 问题 使用Spark SQL删除MOR表后重新建表写入数据不能实时同步ro、rt表,报错如下: WARN HiveSyncTool: Got runtime exception when hive syncing, but continuing as ignoreExceptions config is setjava.lang.IllegalArgumentException: Failed to get schema for table hudi_table2_ro does not existat org.apache.hudi.hive.HoodieHiveClient.getTableSchema(HoodieHiveClient.java:183)at org.apache.hudi.hive.HiveSyncTool.syncHoodieTable(HiveSyncTool.java:286)at org.apache.hudi.hive.HiveSyncTool.doSync(HiveSyncTool.java:213)
  • 配置Flink SQL Client支持SQL校验功能方法 通过SQL Client进行SQL作业开发时,支持进入校验模式校验SQL语法正确性。校验模式下执行SQL命令不会启动Flink job。 校验SQL语句 执行SQL shell命令时添加“-v”参数(或“--validate”参数)直接进入校验模式。 sql-client.sh -v 执行SQL shell命令时通过SET命令进入或退出校验模式。 进入校验模式:SET table.validate = true; 退出校验模式:SET table.validate = false; 校验SQL脚本 当使用“-f”参数指定SQL脚本时,可添加“-v”参数进入校验模式。 sql-client.sh -f test.sql -v
  • 使用约束 新增列在设置默认值前,如果数据已经进行了重写,则查询历史数据不支持返回列的默认值,返回NULL。数据入库、更新、执行Compaction、Clustering都会导致部分或全部数据重写。 列的默认值设置要与列的类型一致,如不一致会进行类型强转,导致默认值精度丢失或者默认值为NULL。 历史数据的默认值与列第一次设置的默认值一致,多次修改列的默认值不会影响历史数据的查询结果。 设置默认值后rollback不能回滚默认值配置。 Spark SQL暂不支持查看列默认值信息,可以通过Hive beeline执行show create table命令查看。
  • 示例 SQL语法具体参考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;
  • 基本语法 方法一:使用INSERT VALUES方式进行数据写入。 UPSERT INTO [database_name.]table [(c1, c2, c3)] VALUES (v11, v12, v13), (v21, v22, v23), ... 方法二:使用INSERT SELECT方式进行数据写入。 UPSERT INTO [database_name.]table [(c1, c2, c3)] SELECT ...
  • 注意事项 MergeTree和ReplicatedMergeTree建表要指定primary key或order by字段作为去重唯一键。如果未指定主键,只指定了order by建表属性,去重键以order by字段为准。 数据去重的key需要提前在应用中进行sharding计算,保证相同的key会sharding到同一个shard,才能保证后续相同的key字段数据sharding到同一个shard进行数据的精确去重。
  • 使用示例 建表样例: CREATE TABLE default.upsert_tab ON CLUSTER default_cluster( `id` Int32, `pdate` Date, `name` String )ENGINE = ReplicatedMergeTree('/clickhouse/tables/default/{shard}/upsert_tab', '{replica}')PARTITION BY toYYYYMM(pdate)PRIMARY KEY id ORDER BY id SETTINGS index_granularity = 8192; Upsert数据去重写入: Upsert into upsert_tab(id, pdate, name) values (1, rand() % 365, 'abc'), (2, rand() % 365, 'bcd'), (1, rand() % 365, 'def'); 查询test_upsert表数据 select * from upsert_tab;┌─id─┬───pdate─┬─name─┐│ 2 │ 1970-06-09│ bcd ││ 1 │ 1970-11-30│ def │└───┴── ────┴────┘ Upsert支持事务 与其他SQL语法类型一样,upsert语法也支持显式和隐式事务,使用事务前需要进行相应的事务功能开启配置。
  • 注意事项 已删除的行会立即标记为已删除,并将自动从所有后续查询中过滤掉。数据清理在后台异步发生。此功能仅适用于MergeTree表引擎系列; 当前能力只支持本地表和复制表的轻量化删除功能,分布式表暂不支持。 数据删除功能的执行性能还依赖merge和mutation(alter table update/delete)任务的多少。queue队列中的mutation任务优先级最低(同一个表上的mutation任务是串行执行的),能并行执行多少个delete任务直接受merge任务执行情况的影响。 表中part个数也决定了轻量化删除的性能,part越多,删除越慢。 Wide part格式文件删除会更快,Compact格式文件删除性能会更慢一些,因为所有列数据都存储在一个文件中。
  • 基于索引查询HBase表数据 在具有索引的用户表中,可以使用SingleColumnValueFilter来查询数据。当查询条件可以命中索引时,查询速度远快于原表查询。 索引的命中规则如下: 多个AND条件查询 当用于查询的列至少包含索引的一个列时,使用索引会提高查询性能。 例如,为C1、C2和C3创建组合索引。 该索引在以下情况下生效: Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol1) 该索引在下列情况下不生效: Filter_Condition(IndexCol2)AND Filter_Condition(IndexCol3) Filter_Condition(IndexCol2) Filter_Condition(IndexCol3) 当在查询中使用“索引列”和“非索引列”进行过滤时,使用索引可提高查询性能。当非索引列命中覆盖列时,查询性能最优;如果有需经常查询的非索引列,建议定义为覆盖列。例如: Filter_Condition(IndexCol1)AND Filter_Condition(NonIndexCol1) Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2)AND Filter_Condition(NonIndexCol1) 当多个列用于查询时,只能为组合索引中的最后一列指定值范围,而其他列只能设置为指定值。 例如,为C1、C2和C3创建组合索引。在范围查询中,只能为C3设置数值范围,过滤条件为“C1 = XXX,C2 = XXX,C3 = 数值范围”。 多个OR条件查询 例如,为C1、C2和C3创建组合索引。 仅对索引列首个字段进行过滤时(支持范围过滤),使用索引可提高查询性能。 Filter_Condition(IndexCol1)OR Filter_Condition(IndexCol1)OR Filter_Condition(IndexCol1) 对非索引和非索引列进行过滤时,无法命中索引,查询性能不会提高。 Filter_Condition(IndexCol1)OR Filter_Condition(NonIndexCol1) 组合查询时,最外层包含OR条件时无法命中索引,查询性能不会提高。 Filter_Condition(IndexCol1)OR Filter_Condition(NonIndexCol1) (Filter_Condition(IndexCol1)AND Filter_Condition(IndexCol2))OR(Filter_Condition(NonIndexCol1)) 减少OR条件使用,尤其是OR条件+范围条件,命中索引的情况下也会造成大范围查询,速度较慢。
  • 操作步骤 使用MySQL客户端连接Doris数据库时,在命令中新增“--enable-cleartext-plugin”,命令如下: mysql --enable-cleartext-plugin -u数据库登录用户 -p数据库登录用户密码 -P数据库连接端口 -hDoris FE实例IP地址 在安装了MySQL客户端的节点执行以下命令启用mysql_clear_password插件,再重新连接Doris即可。 export LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN=1
  • 问题 Spark客户端设置fs.obs.hdfs.trash.version=1不生效,drop table后文件在回收站的存放路径不改变。 通常,默认情况: 当fs.obs.hdfs.trash.version=2时,回收站路径为:/user/.Trash/${userName}/Current 当fs.obs.hdfs.trash.version=1时,回收站路径为:/user/${userName}/.Trash/Current
  • SDK 服务通过MySQL协议与Doris建立连接,部分语言的SDK已经提供了高可用能力,例如MySQL JDBC可以使用自动重试机制,建立连接时通过如下配置设置数据源: jdbc:mysql:loadbalance://[host1][:port],[host2][:port][,[host3][:port]]...[/[database]][?propertyName1=propertyValue1[&propertyName2=propertyValue2]...] 详细内容可参考https://dev.mysql.com/doc/connector-j/en/connector-j-usagenotes-j2ee-concepts-managing-load-balanced-connections.html。
  • 大批量Region上下线过载场景调优 当集群规模较大,Region数过多时,同时重启多个RegionServer,当涉及需要重新上线的Region数过多时(10w+),可能会导致HMaster过载,Region上线慢。 可在Manager界面的HBase配置中调整表4中的参数,提升HMaster处理高优先级请求的能力,减少HMaster过载。 表4 大批量Region上下线过载相关参数调优 实例名称 参数名称 参数描述 调整策略 HMaster hbase.regionserver.metahandler.count HMaster处理高优先级请求的Handler数量。 调大此Handler值,不建议超过1000。 hbase.ipc.server.metacallqueue.read.ratio 高优先级请求队列中读队列的比例,会影响meta读/写Handler的数量。 建议保持默认设置,默认值为“0.5”。 RegionServer hbase.regionserver.msginterval RegionServer与HMaster进行消息传输的时间间隔。 调大此参数可以减轻HMaster压力,建议设置为15s。
  • 回答 原因: Hudi表数据含有Decimal类型数据。 初始入库BULK_INSET方式会使用Spark内部parquet文件的写入类进行写入,Spark对不同精度的Decimal类型处理是不同的。 UPSERT操作时,Hudi使用Avro兼容的parquet文件写入类进行写入,这个和Spark的写入方式是不兼容的。 解决方案: 执行BULK_INSERT时指定设置“hoodie.datasource.write.row.writer.enable = false”,使hoodie采用Avro兼容的parquet文件写入类进行写入。
  • 操作步骤 使用Ranger管理员用户rangeradmin登录Ranger管理页面,具体操作可参考登录Ranger WebUI界面。 在首页中单击“EXTERNAL AUTHORIZATION”区域的组件插件名称“OBS”。 单击“Add New Policy”,添加OBS权限控制策略。 根据业务需求配置相关参数。 表1 OBS权限参数 参数名称 描述 Policy Name 策略名称,可自定义,不能与本服务内其他策略名称重复。 Policy Label 为当前策略指定一个标签,可以根据这些标签搜索报告和筛选策略。 Resource Path 资源路径,配置当前策略适用的OBS路径文件夹,可填写多个值,不支持使用通配符“*”。且配置的OBS路径文件夹必须是已存在的,否则会授权失败。 OBS默认开启权限的递归(且不支持修改),无任何权限的子目录会默认继承父目录所有的权限。 Description 策略描述信息。 Audit Logging 是否审计此策略。 Allow Conditions 策略允许条件,配置本策略内允许的权限。 “Select Group”列选择已创建好的需要授予权限的用户组(配置“Select Role”和“Select User”将不会生效) 单击“Add Permissions”,添加对应权限。 Read:读权限 Write:写权限 Select/Deselect All:全选/取消全选 如需添加多条权限控制规则,可单击按钮添加。如需删除权限控制规则,可单击按钮删除。 例如,为用户组“hs_group1”(该用户组仅由数字0~9、字母a~Z、下划线或#组成,且最大长度为52个字符,否则将导致策略添加失败)添加“obs://hs-test/user/hive/warehouse/o4”表的读写权限,配置如下: 单击“Add”,在策略列表可查看策略的基本信息。等待策略生效后,验证相关权限是否正常。 如果不再使用策略,可单击按钮删除策略。
  • MySQL与HetuEngine数据类型映射 MySQL数据类型到HetuEngine数据类型映射 MySQL类型 HetuEngine类型 BIT BOOLEAN BOOLEAN TINYINT TINYINT TINYINT SMALLINT SMALLINT INTEGER INTEGER BIGINT BIGINT DOUBLE PRECISION DOUBLE FLOAT REAL REAL(m, d) REAL(m, d) DECIMAL(p, s) DECIMAL(p, s) CHAR(n) CHAR(n) VARCHAR(n) VARCHAR(n) TINYTEXT VARCHAR(255) TEXT VARCHAR(65535) MEDIUMTEXT VARCHAR(16777215) LONGTEXT VARCHAR ENUM(n) VARCHAR(n) BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB VARBINARY JSON JSON DATE DATE TIME(n) TIME(n) DATETIME(n) TIMESTAMP(n) TIMESTAMP(n) TIMESTAMP(n)
共100000条