华为云用户手册

  • 参数说明 下表仅列举了部分常用参数,实际参数以Manager页面为准,参数详情请参见官网https://docs.cloudera.com/documentation/enterprise/6/properties/6.3/topics/cm_props_cdh630_impala.html。 表1 Impala常用参数 配置参数 说明 默认值 范围 impalad.customized.configs impalad进程的自定义配置项。 - - --enable_ldap_auth 是否开启ldap认证。 false true或false --ldap_bind_pattern ldap userDNPattern 例如:cn=%s,ou=People,dc=huawei,dc=com - - --ldap_passwords_in_clear_ok 如果设置为true,将允许ldap密码在网络上明文发送(不含TLS/SSL)。 false true或false --ldap_uri-ip ldap ip - - --ldap_uri-port ldap port 389 - --max_log_files 进程日志的最大文件个数。 10 - --max_log_size 进程的日志文件大小最大值,单位 MB。 200 - statestored.customized.configs Statestored进程的自定义配置项。 - - catalogd.customized.configs Catalogd进程的自定义配置项。 - -
  • 参数描述 表1 参数描述 参数 描述 table_name 需要清理无效数据文件的Hudi表的表名,必选。 op_type 命令运行模式,可选,默认值为dry_run,取值:dry_run、repair、undo、query。 dry_run:显示需要清理的无效数据文件。 repair:显示并清理无效的数据文件。 undo:恢复已清理的数据文件。 query:显示已执行清零操作的备份目录。 backup_path 运行模式为undo时有效,需要恢复数据文件的备份目录,必选。 start_time 运行模式为dry_run、repair时有效,产生无效数据文件的开始时间,可选,默认不限制开始时间。 end_time 运行模式为dry_run、repair时有效,产生无效数据文件的结束时间,可选,默认不限制结束时间。
  • 配置从Postgresql抓取数据到Hudi任务的心跳表 在需要同步的Postgresql数据库下执行以下命令创建一张心跳表,心跳表归属cdc_cdl Schema,表名为cdc_heartbeat,主键为cdl_job_id: DROP TABLE IF EXISTS cdc_cdl.cdc_heartbeat; CREATE TABLE cdc_cdl.cdc_heartbeat ( cdl_job_id int8 NOT NULL, cdl_last_heartbeat timestamp(6) ); ALTER TABLE cdc_cdl.cdc_heartbeat ADD CONSTRAINT cdc_heartbeat_pkey PRIMARY KEY (cdl_job_id); 心跳表创建完成后,在CDL WebUI界面创建从Postgresql抓取数据到Hudi的同步任务并启动即可收到心跳数据。
  • 数据判齐消息字段含义 表1 数据判齐消息字段 字段名 描述 cdl_job_name 本批次数据所属同步任务名称 target_table_schema 本批次数据写入Schema名称 target_table_name 本批次数据写入Hudi表名称 target_table_path 本批次数据保存的Hudi表路径 total_num 本批次数据总数 cdl_original_heartbeat 本批次数据中包含的心跳数据的最大时间, 如果本批次不包含心跳数据则值为空 cdl_last_heartbeat 本批次数据中包含的心跳数据的最小时间,如果本批次不包含心跳数据则取“event_time_min”的值 insert_num 本批次数据insert事件总数 update_num 本批次数据update事件总数 delete_num 本批次数据delete事件总数 event_time_min 本批次数据源端最小事务提交时间 event_time_max 本批次数据源端最大事务提交时间 event_time_avg 本批次数据源端平均事务提交时间 kafka_timestamp_min 本批次数据发送到Kafka的最小时间 kafka_timestamp_max 本批次数据发送到Kafka的最大时间 begin_time 本批次数据开始写入Hudi的时间 end_time 本批次数据写入Hudi的结束时间 cdc_partitioned_time 心跳表的时间分区字段 cdc_last_update_date 该条判齐记录写入时间
  • 操作场景 心跳和数据判齐功能用于统计CDL同步任务的全链路信息, 包括从数据库管理系统RDBMS到Kafka的数据耗时、从Kafka消费数据写入到Hudi的数据耗时和数据条数等一系列信息,并将其写入到特定的Topic(cdl_snapshot_topic)中,用户可自行消费Topic中的数据并写入到某个特定Hudi表作数据判齐使用。心跳判齐数据不仅可以用来判断心跳时间之前的数据已经同步到 数据湖 ,还可以根据事务时间,写Kafka的时间,数据开始入湖时间和数据入湖结束时间来判断数据时延问题。 同时对于PgSQL任务,配置心跳表可以定期向前推进PgSQL中Slot记录的LSN的信息,避免由于某个任务配置了某部分变化很小的表导致数据库日志积压。
  • 配置从Oracle(ogg)抓取数据到Hudi任务的心跳表 在需要同步数据的Oracle数据库中执行以下命令创建一张心跳表,心跳表归属于CDC_CDL Schema,表名为CDC_HEARTBEAT,主键为CDL_JOB_ID: CREATE TABLE "CDC_CDL"."CDC_HEARTBEAT" ( "CDL_JOB_ID" VARCHAR(22) PRIMARY KEY, "CDL_LAST_HEARTBEAT" TIMESTAMP, SUPPLEMENTAL LOG DATA (ALL) COLUMNS ); 将CDC_HEARTBEAT表加入到Oracle或者ogg的任务中,确保心跳数据可以正常发送到Kafka。 如果是Oracle任务,直接执行4。 在CDL WebUI配置thirdparty-kafka(ogg)连接增加Oracle的连接信息。 配置完成后,在CDL WebUI界面创建从Oracle(ogg)抓取数据到Hudi任务并启动即可收到心跳数据。
  • 配置opengauss到Hudi任务的心跳表 在需要同步的opengauss数据库下执行以下命令创建一张心跳表,心跳表归属cdc_cdl Schema,表名为cdc_heartbeat,主键为cdl_job_id: DROP TABLE IF EXISTS cdc_cdl.cdc_heartbeat; CREATE TABLE cdc_cdl.cdc_heartbeat ( cdl_job_id int8 NOT NULL, cdl_last_heartbeat timestamp(6) ); ALTER TABLE cdc_cdl.cdc_heartbeat ADD CONSTRAINT cdc_heartbeat_pkey PRIMARY KEY (cdl_job_id); 将该心跳表加入到DRS任务,以确保心跳表数据正常发送到DRS Kafka。 在CDL WebUI界面配置opengauss的thirdparty-kafka连接时增加opengauss的连接信息,如果opengauss部署为一主多备模式,需在“host”填写所有的IP。 配置完成之后,在CDL WebUI界面创建从thirdparty-kafka抓取数据到Hudi的任务并启动即可收到心跳数据。
  • 命令格式 set hoodie.archive.file.cleaner.policy = KEEP_ARCHIVED_FILES_BY_SIZE; set hoodie.archive.file.cleaner.size.retained = 5368709120; run cleanarchive on tableIdentifier/tablelocation; set hoodie.archive.file.cleaner.policy = KEEP_ARCHIVED_FILES_BY_DAYS; set hoodie.archive.file.cleaner.days.retained = 30; run cleanarchive on tableIdentifier/tablelocation;
  • 参数描述 表1 参数描述 参数 描述 tableIdentifier Hudi表的名称。 tablelocation Hudi表的存储路径。 hoodie.archive.file.cleaner.policy 清理归档文件的策略:目前仅支持KEEP_ARCHIVED_FILES_BY_SIZE和KEEP_ARCHIVED_FILES_BY_DAYS两种策略,默认策略为KEEP_ARCHIVED_FILES_BY_DAYS。 KEEP_ARCHIVED_FILES_BY_SIZE策略可以设置归档文件占用的存储空间大小 KEEP_ARCHIVED_FILES_BY_DAYS策略可以清理超过某个时间点之外的归档文件 hoodie.archive.file.cleaner.size.retained 当清理策略为KEEP_ARCHIVED_FILES_BY_SIZE时,该参数可以设置保留多少字节大小的归档文件,默认值5368709120字节(5G)。 hoodie.archive.file.cleaner.days.retained 当清理策略为KEEP_ARCHIVED_FILES_BY_DAYS时,该参数可以设置保留多少天以内的归档文件,默认值30(天)。
  • FlinkSQL DISTRIBUTEBY FlinkSQL新增DISTRIBUTEBY特性,根据指定的字段进行分区,支持单字段及多字段,解决数据仅需要分区的场景。示例如下: SELECT /*+ DISTRIBUTEBY('id') */ id, name FROM t1;SELECT /*+ DISTRIBUTEBY('id', 'name') */ id, name FROM t1;SELECT /*+ DISTRIBUTEBY('id1') */ id as id1, name FROM t1;
  • 参数描述 表1 参数描述 参数 描述 是否必填 table 需要查询表的表名,支持database.tablename格式 是 clean_policy 清理老版本数据文件的策略,默认KEEP_LATEST_COMMITS 否 retain_commits 仅对KEEP_LATEST_COMMITS策略有效 否 hours_retained 仅对KEEP_LATEST_BY_HOURS策略有效 否 file_version_retained 仅对KEEP_LATEST_FILE_VERSIONS策略有效 否
  • FlinkSQL窗口函数支持迟到数据 FlinkSQL新增窗口函数支持迟到数据特性,解决迟到数据需要处理的场景。目前支持TUMBLE、HOP、OVER、CUMULATE窗口函数的迟到数据,示例如下: CREATE TABLE T1 ( `int` INT, `double` DOUBLE, `float` FLOAT, `bigdec` DECIMAL(10, 2), `string` STRING, `name` STRING, `rowtime` TIMESTAMP(3), WATERMARK for `rowtime` AS `rowtime` - INTERVAL '1' SECOND) WITH ( 'connector' = 'values',);-- 该Sink的字段必须和窗口的输入数据保持一致,但顺序不要求一致CREATE TABLE LD_SINK( `float` FLOAT, `string` STRING, `name` STRING, `rowtime` TIMESTAMP(3)) WITH ( 'connector' = 'print',);SELECT /*+ LATE_DATA_SINK('sink.name'='LD_SINK') */ `name`, MIN(`float`), COUNT(DISTINCT `string`)FROM TABLE( TUMBLE(TABLE T1, DESCRIPTOR(rowtime), INTERVAL '5' SECOND))GROUP BY `name`, window_start, window_end 该特性还支持窗口接收到迟到数据时输出当前窗口的开始时间和结束时间,可通过添加在Hint中'window.start.field'和'window.end.field'使用,字段类型必须是timestamp,示例如下: CREATE TABLE LD_SINK( `float` FLOAT, `string` STRING, `name` STRING, `rowtime` TIMESTAMP(3), `windowStart` TIMESTAMP(3), `windowEnd` TIMESTAMP(3)) WITH ( 'connector' = 'print',);SELECT /*+ LATE_DATA_SINK('sink.name'='LD_SINK', 'window.start.field'='windowStart', 'window.end.field'='windowEnd') */ `name`, MIN(`float`), COUNT(DISTINCT `string`)FROM TABLE( TUMBLE(TABLE T1, DESCRIPTOR(rowtime), INTERVAL '5' SECOND))GROUP BY `name`, window_start, window_end
  • FlinkSQL支持设置Source的并发 本章节适用于 MRS 3.3.0及以后版本。 FlinkSQL支持通过使用参数“source.parallelism”设置Source算子的并发数,解决下游算子的并发数引起的一些问题,例如下游算子发送数据倾斜、背压、作业性能慢等问题。 该特性会将Source和下游算子的Forward分区改为Rebalance分区,所以当Source算子的并发数和下游算子的并发数(parallelism数)不一致时,且作业不允许数据乱序,需要在启用该特性的同时开启DISTRIBUTEBY特性,可参考Flink SQL语法增强。 如设置Source并发数为“2”并开启DISTRIBUTEBY特性: CREATE TABLE KafkaSource (`user_id` VARCHAR,`user_name` VARCHAR, `age` INT ) WITH ( 'connector' = 'kafka', 'topic' = 'test_source', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'properties.group.id' = 'testGroup', 'scan.startup.mode' = 'latest-offset', 'format' = 'csv', 'properties.sasl.kerberos.service.name' = 'kafka', 'properties.security.protocol' = 'SASL_PLAINTEXT', 'properties.kerberos.domain.name' = 'hadoop.系统 域名 ', -- 设置Source并发数 'source.parallelism' = '2' ); CREATE TABLE KafkaSink( `user_id` VARCHAR, `user_name` VARCHAR, `age` INT ) WITH ( 'connector' = 'kafka', 'topic' = 'test_sink', 'properties.bootstrap.servers' = 'Kafka的Broker实例业务IP:Kafka端口号', 'value.format' = 'csv', 'properties.sasl.kerberos.service.name' = 'kafka', 'properties.security.protocol' = 'SASL_PLAINTEXT', 'properties.kerberos.domain.name' = 'hadoop.系统域名' ); -- Insert into KafkaSink select user_id, user_name, age from KafkaSource;(未开启DISTRIBUTEBY特性)-- 开启DISTRIBUTEBY特性Insert into KafkaSink select/*+ DISTRIBUTEBY('user_id') */ user_id, user_name, age from KafkaSource;
  • 前提条件 集群已安装CDL、Hudi服务且运行正常。 ThirdKafka数据库的Topic需要能被MRS集群消费,操作步骤请参考ThirdPartyKafka前置准备。 在 FusionInsight Manager中创建一个人机用户,例如“cdluser”,加入用户组cdladmin、hadoop、kafka、supergroup,主组选择“cdladmin”组,关联角色“System_administrator”。
  • 配置HetuEngine使用代理用户鉴权 适用于MRS 3.3.0及以后版本。 HetuEngine支持使用FusionInsight Manager用户认证时通过客户自有用户(代理用户)使用Ranger鉴权的能力。即在使用HetuEngine客户端时,通过--session-user来指定代理用户。 创建认证用户或代理用户请参考创建HetuEngine权限角色。 启用Ranger鉴权并为代理用户配置操作数据源的数据库、表、列的管理权限,具体操作请参考添加HetuEngine的Ranger访问权限策略。 集群已启用Kerberos认证(安全模式) 使用kinit指定认证用户(需为HetuEngine管理员用户,并额外添加supergroup用户组才能代理其他用户鉴权),如hetuadmin1。 kinit hetuadmin1 根据提示输入用户密码,首次登录需重置密码。 再使用--session-user指定代理用户,如user1。 hetu-cli --session-user user1 集群未启用Kerberos认证(普通模式) 使用--user指定认证用户(需拥有hetuuser用户组才能代理其他用户鉴权),如user;使用--session-user指定代理用户,如user1。 hetu-cli --user user --session-user user1 该功能不适用于HiveMetastore数据源鉴权与多用户映射共存的场景。 父主题: HetuEngine用户权限管理
  • 非聚合模型示例 在col1列后添加new_col列(添加Key列): ALTER TABLE example_db.my_table ADD COLUMN new_col INT KEY DEFAULT "0" AFTER col1; 在col1列后添加new_col列(添加Value列): ALTER TABLE example_db.my_table ADD COLUMN new_col INT DEFAULT "0" AFTER col1; 修改col1列的类型为BIGINT(Key列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT KEY DEFAULT "1"; 修改col1列的类型为BIGINT(Value列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT DEFAULT "1"; 删除col1列: ALTER TABLE example_db.my_table DROP COLUMN col1;
  • 聚合模型示例 聚合列不支持修改聚合类型。 在col1列后添加new_col列(key列): ALTER TABLE example_db.my_table ADD COLUMN new_col INT DEFAULT "0" AFTER col1; 在col1后添加new_col列(Value列SUM聚合类型): ALTER TABLE example_db.my_table ADD COLUMN new_col INT SUM DEFAULT "0" AFTER col1; 修改col1列的类型为BIGINT(Key列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT DEFAULT "1"; 修改col1列的类型为BIGINT(Value列): ALTER TABLE example_db.my_table MODIFY COLUMN col1 BIGINT MAX DEFAULT "1"; 删除col1列: ALTER TABLE example_db.my_table DROP COLUMN col1;
  • 检查全局二级索引数据一致性 在HBase客户端执行以下命令可检查数据一致性,如果不一致,将重新构建索引数据。一致性检查结果会保存到“{数据表所在的NameSpace}:GSI_INCONSISTENCY_TABLE”表中。 hbase org.apache.hadoop.hbase.hindex.global.tools.GlobalHIndexConsistencyTool -dt table1 -n idx3 -src BOTH -r 相关参数介绍如下: -dt,--data-table:要进行一致性检查的数据表名称。 -n,--index-name:要进行一致性检查的索引名称。 -src,--source:检查模式选择,默认为“BOTH”,支持以下模式: INDEX_TABLE_SOURCE:索引表作为源表。 DATA_TABLE_SOURCE:数据表作为源表。 BOTH:索引表和数据表均作为源表。 -r,--repair:索引数据修复选项,添加此参数,表示检查后进行修复。 -sc,--scan-caching(可选) :一致性检查/修复的MapReduce任务中scan caching大小。
  • 物化视图改写能力支持范围 物化视图支持的类型 BOOLEAN、DECIMAL、DOUBLE、REAL/FLOAT、INT、BIGINT、SMALLINT、TINYINT、CHAR/VARCHAR、DATE、TIME、TIMESTAMP、INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND、BINARY/VARBINARY、UUID。 物化视图改写支持的函数 转换函数:只支持CAST函数。 字符串函数:支持所有字符串函数,包括char_length、character_length、chr、codepoint、decode、encode、find_in_set、format_number、locate、hamming_distance、instr、levenshtein、levenshtein_distance、ltrim、lpad、octet_length、position、quote、repeat2。 数学运算符:支持所有数学运算符。 聚合函数:支持的聚合函数包括 COUNT、SUM、MIN、MAX、AVG、LEAD、LAG、FIRST_VALUE、LAST_VALUE、COVAR_POP、COVAR_SAMP、REGR_SXX、REGR_SYY、STDDEV_POP、STDDEV_SAMP、VAR_POP、VAR_SAMP、ROW_NUMBER、RANK、PERCENT_RANK、DENSE_RANK、CUME_DIST。 以下场景,物化视图不支持对包含了函数的SQL查询进行改写: SQL中包含无参函数 SQL中包含了HetuEngine支持的会根据参数的类型获得不同类型的返回值的函数 SQL中函数存在嵌套使用,或者是使用的函数会发生异常导致重写失败的函数 物化视图创建语句改写不支持二段式表名,支持一段式和三段式表名。 如支持改写表名为“hive.mvschema.t1”和“t1”,不支持改写表名为“mvschema.t1”。
  • 使用HetuEngine查询容错执行能力须知 容错不适用于已损坏的查询或其他用户错误场景。例如:不会花费资源重试由于无法解析SQL而失败的查询任务。 不同数据源对SQL语句的容错支持能力存在差异: 所有数据源都支持读操作的容错执行。 Hive数据源支持写操作的容错执行。 容错能力非常适合大批量查询,如果用户在容错集群上同时运行大量短时间小查询,则可能会遇到延迟。因此,建议处理批处理操作时使用专用的容错计算实例,与进行交互式查询的更高查询量的计算实例分开。
  • HetuEngine查询容错执行能力介绍 当集群中的节点因网络、硬件或软件问题发生故障时,在故障节点上运行的所有查询任务都将丢失。这可能会严重影响集群生产力并造成资源浪费,尤其对于长时间运行的查询影响较大。HetuEngine提供一种故障恢复机制,即容错执行能力。集群可通过自动重新运行受影响的查询或其组件任务来降低查询失败概率。可降低人工干预并提高了容错性,但会延长总执行时间。 当前支持如下两种容错执行机制: QUERY级重试策略:开启QUERY级别容错不会进行中间数据落盘,如果查询任务失败,将自动重试该查询任务的所有task。当集群的大部分工作由小查询组成时建议使用此策略。 TASK级重试策略:开启TASK级别容错会默认配置HDFS作为交换区,将exchange中间数据落盘,如果查询任务失败,将重试失败的task。建议在执行大批量查询时使用此策略,集群可以更高效的重试查询中的小颗粒任务,而不是整个查询。 本示例介绍设置“TASK”重试策略容错执行机制。
  • 参数描述 表1 参数描述 参数 描述 是否必填 op 生成compaction计划(op指定为“schedule”),或者执行已经生成的compaction计划(op指定为“run”) 是 table 需要查询表的表名,支持database.tablename格式 否 path 需要查询表的路径 否 timestamp 在op指定为“run”时,可以指定timestamp来执行该时间戳对应的compaction计划以及该时间戳之前未执行的compaction计划 否
  • 日志描述 日志路径:Guardian相关日志的存储路径为:“/var/log/Bigdata/guardian/token-server”。 日志归档规则:Guardian的运行日志启动了自动压缩归档功能,当日志大小超过50MB的时候(此日志文件大小可进行配置),会自动压缩,压缩后的日志文件名规则为:“token-server.log.[编号]”。最多保留最近的20个压缩文件,压缩文件保留个数和压缩文件阈值可以配置。
  • 参数描述 表1 UPDATE参数 参数 描述 tableIdentifier 在其中执行MergeInto操作的Hudi表的名称。 target_alias 目标表的别名。 sub_query 子查询。 source_alias 源表或源表达式的别名。 merge_condition 将源表或表达式和目标表关联起来的条件 condition 过滤条件,可选。 matched_action 当满足条件时进行Delete或Update操作 not_matched_action 当不满足条件时进行Insert操作
  • 注意事项 以下为分别使用SET和RESET命令进行动态设置或清除操作的属性: 表2 属性描述 属性 描述 hoodie.insert.shuffle.parallelism insert方式写入数据时的spark shuffle并行度。 hoodie.upsert.shuffle.parallelism upsert方式写入数据时的spark shuffle并行度。 hoodie.delete.shuffle.parallelism delete方式删除数据时的spark shuffle并行度。 hoodie.sql.insert.mode 指定Insert模式,取值为strict、non-strict及upsert。 hoodie.sql.bulk.insert.enable 指定是否开启bulk insert写入。 spark.sql.hive.convertMetastoreParquet sparksql把parquet表转化为datasource表进行读取。当hudi的provider为hive的情况下,使用sparksql或sparkbeeline进行读取,需要将该参数设置为false。
  • 命令格式 Add或Update参数值: SET parameter_name=parameter_value 此命令用于添加或更新“parameter_name”的值。 Display参数值: SET parameter_name 此命令用于显示指定的“parameter_name”的值。 Display会话参数: SET 此命令显示所有支持的会话参数。 Display会话参数以及使用细节: SET -v 此命令显示所有支持的会话参数及其使用细节。 Reset参数值: RESET 此命令清除所有会话参数。
  • 示例 部分字段更新 create table h0(id int, comb int, name string, price int) using hudi options(primaryKey = 'id', preCombineField = 'comb');create table s0(id int, comb int, name string, price int) using hudi options(primaryKey = 'id', preCombineField = 'comb');insert into h0 values(1, 1, 1, 1);insert into s0 values(1, 1, 1, 1);insert into s0 values(2, 2, 2, 2);//写法1merge into h0 using s0on h0.id = s0.idwhen matched then update set h0.id = s0.id, h0.comb = s0.comb, price = s0.price * 2;//写法2merge into h0 using s0on h0.id = s0.idwhen matched then update set id = s0.id,name = h0.name,comb = s0.comb + h0.comb,price = s0.price + h0.price; 缺省字段更新和插入 create table h0(id int, comb int, name string, price int, flag boolean) using hudi options(primaryKey = 'id', preCombineField = 'comb');create table s0(id int, comb int, name string, price int, flag boolean) using hudi options(primaryKey = 'id', preCombineField = 'comb');insert into h0 values(1, 1, 1, 1, false);insert into s0 values(1, 2, 1, 1, true);insert into s0 values(2, 2, 2, 2, false);merge into h0 as targetusing (select id, comb, name, price, flag from s0) sourceon target.id = source.idwhen matched then update set *when not matched then insert *; 多条件更新和删除 create table h0(id int, comb int, name string, price int, flag boolean) using hudi options(primaryKey = 'id', preCombineField = 'comb');create table s0(id int, comb int, name string, price int, flag boolean) using hudi options(primaryKey = 'id', preCombineField = 'comb');insert into h0 values(1, 1, 1, 1, false);insert into h0 values(2, 2, 1, 1, false);insert into s0 values(1, 1, 1, 1, true);insert into s0 values(2, 2, 2, 2, false);insert into s0 values(3, 3, 3, 3, false);merge into h0using (select id, comb, name, price, flag from s0) sourceon h0.id = source.idwhen matched and flag = false then update set id = source.id, comb = h0.comb + source.comb, price = source.price * 2when matched and flag = true then deletewhen not matched then insert *;
  • Schema演进支持范围 Schema演进支持范围: 支持列(包括嵌套列)相关的增、删、改、位置调整等操作。 不支持对分区列做演进。 不支持对Array类型的嵌套列进行增、删、列操作。 表1 引擎支持矩阵 引擎 DDL操作Schema 变更后的Hudi表写操作支持 变更后的Hudi表读操作支持 变更后Hudi表compaction支持 SparkSQL Y Y Y Y Flink N Y Y Y HetuEngine N N Y N Hive N N Y N
  • 操作步骤 以Hive客户端安装用户登录源端集群安装客户端的节点。 执行以下命令,切换到客户端安装目录,例如安装目录为“/opt/client”,请用户根据实际情况修改。 cd /opt/client 执行以下命令配置环境变量。 source bigdata_env 如果集群开启了Kerberos认证,执行以下命令认证用户,否则跳过此步骤。 kinit Hive业务用户 执行以下命令登录源端集群的Hive客户端。 beeline 执行以下命令创建表“export_test”。 create table export_test(id int) ; 执行以下命令向表“export_test”中插入数据。 insert into export_test values(123); 在目标集群重复执行1-4,并执行以下命令创建存放表“export_test”导出后的HDFS路径。 dfs -mkdir /tmp/export 执行以下命令登录目标集群的Hive客户端。 beeline 导入导出表“export_test”。 使用Hive Import/Export对表数据迁移时,支持以下几种场景,可以根据实际情况选择合适的导入导出方式。 场景一:简单导出导入 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。 export table export_test to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到表“export_test”中。 import from '/tmp/export'; 场景二 :在导入时重命名表 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。 export table export_test to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到表“import_test”中。 import table import_test from '/tmp/export'; 场景三:导出分区数据并导入 在源端集群执行以下命令将表“export_test”的pt1和pt2分区导出到8创建的目录下。 export table export_test partition (pt1="in", pt2="ka") to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到表“export_test”中。 import from '/tmp/export'; 场景四:导出表数据并且将该数据导入到分区中 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。 export table export_test to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到表“import_test”的pt1和pt2分区中。 import table import_test partition (pt1="us", pt2="tn") from '/tmp/export'; 场景五:导入表数据时指定表的Location 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。 export table export_test to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到表“import_test”中,且该表的Location为“/tmp/export”。 import table import_test from '/tmp' location '/tmp/export'; 场景六:导入表数据为外部表 在源端集群执行以下命令将表“export_test”的元数据和业务数据导出到8创建的目录下。 export table export_test to 'hdfs://haclusterX/tmp/export'; 在目标集群执行以下命令将10.a导出的表数据导入到外部表“import_test”中。 import external table import_test from '/tmp/export'; 导出表/分区数据时,存放表/分区数据的HDFS路径需提前创建,且该目录为空,否则导出失败。 导出分区时,导出的表必须为分区表,且不支持导出同一个分区字段的多个分区值的数据;导入到表中分区时导入的表必须是分区表。 导入数据时需注意: 使用import from '/tmp/export';命令导入表是没有指定表名的场景,该场景导入的数据会保存到与源表名相同的表路径下,需注意以下两点: 如果目标集群上不存在与源集群上同名的表,在导入表的过程中会创建该表。 如果目标集群上已存在与源集群上同名的表,该表对应的HDFS目录下必须为空,否则导入失败。 使用import external table import_test from '/tmp/export';命令导入表会将导出的表导入到指定的表中,需注意以下两点: 如果目标集群上不存在与指定的表名相同的表,在导入表的过程中会创建该表。 如果目标集群上已存在与指定的表名相同的表,该表对应的HDFS目录下必须为空,否则导入失败。 “haclusterX”为新增的自定义参数“dfs.namenode.rpc-address.haclusterX”中的“haclusterX”
  • IoTDB支持的数据类型和编码 IoTDB支持如下几种数据类型和编码方式,参见表1。 表1 IoTDB支持的数据类型和编码 类型 说明 支持的编码 BOOLEAN 布尔值 PLAIN、RLE INT32 整型 PLAIN、RLE、TS_2DIFF、GORILLA、FREQ、ZIGZAG INT64 长整型 PLAIN、RLE、TS_2DIFF、GORILLA、FREQ、ZIGZAG FLOAT 单精度浮点数 PLAIN、RLE、TS_2DIFF、GORILLA、FREQ DOUBLE 双精度浮点数 PLAIN、RLE、TS_2DIFF、GORILLA、FREQ TEXT 字符串 PLAIN、DICTIONARY 父主题: 使用IoTDB
共100000条
提示

您即将访问非华为云网站,请注意账号财产安全