华为云用户手册

  • 执行动作 单击,选择一个或多个目录或文件。 单击“Actions”,在弹出菜单选择一个操作。 “Rename”:表示重新命名一个目录或文件。 “Move”:表示移动文件,在“移至”选择新的目录并单击“移动”完成移动。 “Copy”:表示复制选中的文件或目录。 “Change permissions”:表示修改选中目录或文件的访问权限。 可以为属主、属组和其他用户设置“Read”、“Write”和“Excute”权限。 “Sticky”表示禁止HDFS的管理员、目录属主或文件属主以外的用户在目录中移动文件。 “Recursive”表示递归设置权限到子目录。 “Storage policies”:表示设置目录或文件在HDFS中的存储策略。 “Summary”:表示查看选中的文件或目录的HDFS存储信息。
  • 操作步骤 运行如下命令删除表。 DROP TABLE [IF EXISTS] [db_name.]table_name; “db_name”为可选参数。如果没有指定“db_name”,那么将会删除当前数据库下名为“table_name”的表。 例如执行命令,删除数据库“productdb”下的表“productSalesTable”: DROP TABLE productdb.productSalesTable; 执行以下命令查询表是否被删除: SHOW TABLES;
  • 回答 这种情况是由于磁盘存在IO错误,处理方法如下: 方法一:登录FusionInsight Manager页面,检查Manager界面上是否磁盘IO异常的告警,如果有,可参考对应的告警帮助文档,通过更换硬盘恢复。 方法二:登录FusionInsight Manager页面,重启ClickHouse实例,恢复磁盘状态。 此时磁盘未更换,有IO错误发生时,磁盘状态还会被置为fault或者abnormal。
  • ALTER TABLE修改表数据 建议慎用delete、update的mutation操作 标准SQL的更新、删除操作是同步的,即客户端要等服务端反回执行结果(通常是int值);而ClickHouse的update、delete是通过异步方式实现的,当执行update语句时,服务端立即返回执行成功还是失败结果,但是实际上此时数据还没有修改完成,而是在后台排队等着进行真正的修改,可能会出现操作覆盖的情况,也无法保证操作的原子性。 业务场景要求有update、delete等操作,建议使用ReplacingMergeTree、CollapsingMergeTree、VersionedCollapsingMergeTree引擎,使用方式参见:https://clickhouse.tech/docs/zh/engines/table-engines/mergetree-family/collapsingmergetree/。 建议少或不增删数据列 业务提前规划列个数,如果将来有更多列要使用,可以规划预留多列,避免在生产系统跑业务过程中进行大量的alter table modify列操作,导致不可以预知的性能、数据一致性问题。 父主题: ClickHouse常用SQL语法
  • 参数说明 表1 HDFS参数说明 参数 参数说明 默认值 fs.obs.security.provider 指定获取访问OBS文件系统密钥的实现方式。 参数取值: com.huawei.mrs.MrsObsCredentialsProvider:通过MRS云服务委托获取凭证。 com.obs.services.EcsObsCredentialsProvider:通过ECS云服务获取AK/SK信息。 com.obs.services.BasicObsCredentialsProvider:使用用户传入OBS的AK/SK信息。 com.obs.services.EnvironmentVariableObsCredentialsProvider:从环境变量中读取AK/SK信息。 com.huawei.mrs.MrsObsCredentialsProvider
  • 回答 由于Spark存在一个机制,为了提高性能会缓存ORC的元数据信息。当通过Hive或其他方式更新了ORC表时,缓存的元数据信息未更新,导致Spark SQL查询不到新插入的数据。 对于存储类型为ORC的Hive分区表,在执行插入数据操作后,如果分区信息未改变,则缓存的元数据信息未更新,导致Spark SQL查询不到新插入的数据。 解决措施: 在使用Spark SQL查询之前,需执行Refresh操作更新元数据信息: REFRESH TABLE table_name; table_name为刷新的表名,该表必须存在,否则会出错。 执行查询语句时,即可获取到最新插入的数据。 使用sqark时,执行以下命令禁用Spark优化: set spark.sql.hive.convertMetastoreOrc=false;
  • 回答 原因: 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文件写入类进行写入。
  • 参数说明 下表仅列举了部分常用参数,实际参数以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进程的自定义配置项。 - -
  • 回答 使用root用户登录安装客户端的节点。 执行以下命令,切换到客户端安装目录,例如“/opt/client”。 cd /opt/client 执行以下命令配置环境变量。 source bigdata_env 根据集群认证模式,完成Hive客户端登录。 安全模式,则执行以下命令,完成用户认证并登录Hive客户端。 kinit 组件业务用户 beeline 普通模式,则执行以下命令,登录Hive客户端。 使用指定组件业务用户登录Hive客户端。 beeline -n 组件业务用户 不指定组件业务用户登录Hive客户端,则会以当前操作系统用户登录。 beeline 执行以下命令关闭客户端日志: set hive.server2.logging.operation.enabled=false; 执行以下命令查看客户端日志是否已关闭,如下图所示即为关闭成功。 set hive.server2.logging.operation.enabled;
  • Sqoop1.4.7适配步骤 下载开源sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz包(下载地址http://archive.apache.org/dist/sqoop/1.4.7/)。 将下载好的sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz包放入已安装MRS客户端的节点的“/opt/Bigdata/client”目录并解压。 tar zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz 从MySQL官网下载MySQL jdbc驱动程序“mysql-connector-java-xxx.jar”,具体MySQL jdbc驱动程序选择参见下表。 表1 版本信息 jdbc驱动程序版本 MySQL版本 Connector/J 5.1 MySQL 4.1、MySQL 5.0、MySQL 5.1、MySQL 6.0 alpha Connector/J 5.0 MySQL 4.1、MySQL 5.0 servers、distributed transaction (XA) Connector/J 3.1 MySQL 4.1、MySQL 5.0 servers、MySQL 5.0 except distributed transaction (XA) Connector/J 3.0 MySQL 3.x、MySQL 4.1 将MySQL 驱动包放入Sqoop的lib目录下(/opt/Bigdata/client/sqoop-1.4.7.bin__hadoop-2.6.0/lib)并修改jar包的属组和权限,参考图1的omm:wheel 和755的属组和权限。 图1 MySQL 驱动包的属组和权限 使用MRS客户端中Hive的lib目录下(/opt/Bigdata/client/Hive/Beeline/lib)的jackson开头的jar包替换Sqoop的lib下的相应jar包。 图2 jackson开头的jar 将MRS Hive客户端中(/opt/Bigdata/client/Hive/Beeline/lib)的jline的包,拷贝到Sqoop的lib下。 执行vim $JAVA_HOME/jre/lib/security/java.policy增加如下配置: permission javax.management.MBeanTrustPermission "register"; 执行如下命令,进入Sqoop的conf目录并增加配置: cd /opt/Bigdata/client/sqoop-1.4.7.bin__hadoop-2.6.0/conf cp sqoop-env-template.sh sqoop-env.sh 执行vim sqoop-env.sh 设置Sqoop的环境变量,Hadoop、Hive的目录根据实际目录修改。 export HADOOP_COMMON_HOME=/opt/Bigdata/client/HDFS/hadoopexport HADOOP_MAPRED_HOME=/opt/Bigdata/client/HDFS/hadoopexport HIVE_HOME=/opt/Bigdata/MRS_1.9.X/install/FusionInsight-Hive-3.1.0/hive(请按照实际路径填写)export HIVE_CONF_DIR=/opt/Bigdata/client/Hive/configexport HCAT_HOME=/opt/Bigdata/client/Hive/HCatalog 图3 设置Sqoop的环境变量 编写Sqoop脚本 例如: /opt/Bigdata/FusionInsight_Current/1_19_SqoopClient/install/FusionInsight-Sqoop-1.4.7/bin/sqoop import --connect jdbc:mysql://192.168.0.183:3306/test --driver com.mysql.jdbc.Driver --username 'root' --password 'xxx' --query "SELECT id, name FROM tbtest WHERE \$CONDITIONS" --hcatalog-database default --hcatalog-table test --num-mappers 1
  • 回答 将https://repo.huaweicloud.com/repository/maven/huaweicloudsdk/org/apache/hive/hcatalog/hive-hcatalog-core/源下的jar包替换到mrs客户端的hcatalog的目录下,并重命名之前的同名hcatalog的jar包。如图302002就是替换后的包,310001-SNAPSHOT.jar.bak就是加了.bak后缀的原包。 图1 hcatalog目录 图2 替Jar包
  • 操作步骤 以客户端安装用户,登录安装Kafka客户端的节点。 切换到Kafka客户端安装目录。 cd /opt/client 执行以下命令,配置环境变量。 source bigdata_env 执行以下命令,进行用户认证。(普通模式跳过此步骤) kinit 组件业务用户 执行以下命令进入Kafka客户端的bin目录。 cd Kafka/kafka/bin 执行以下命令生成执行计划。 ./kafka-reassign-partitions.sh --zookeeper 172.16.0.119:2181/kafka --topics-to-move-json-file ../move-kafka-topic.json --broker-list "1,2,3" --generate 172.16.0.119:ZooKeeper实例的业务IP。 --broker-list "1,2,3":参数中的“1,2,3”为扩容后的所有broker_id。 执行vim ../reassignment.json创建“reassignment.json”文件并保存,保存路径为“/opt/kafkaclient/Kafka/kafka”。 拷贝6中生成的“Proposed partition reassignment configuration”下的内容至“reassignment.json”文件,如下所示: {"version":1,"partitions":[{"topic":"test","partition":4,"replicas":[1,2],"log_dirs":["any","any"]},{"topic":"test","partition":1,"replicas":[1,3],"log_dirs":["any","any"]},{"topic":"test","partition":3,"replicas":[3,1],"log_dirs":["any","any"]},{"topic":"test","partition":0,"replicas":[3,2],"log_dirs":["any","any"]},{"topic":"test","partition":2,"replicas":[2,1],"log_dirs":["any","any"]}]} 执行以下命令进行分区重分布。 ./kafka-reassign-partitions.sh --zookeeper 172.16.0.119:2181/kafka --reassignment-json-file ../reassignment.json --execute --throttle 50000000 --throttle 50000000:限制网络带宽为50MB。带宽可根据数据量大小及客户对均衡时间的要求进行调整,5TB数据量,使用50MB带宽,均衡时长约8小时。 执行以下命令查看迁移状态。 ./kafka-reassign-partitions.sh --zookeeper 172.16.0.119:2181/kafka --reassignment-json-file ../reassignment.json --verify
  • 前提条件 MRS集群管理员已明确业务需求,并准备一个Kafka管理员用户(属于kafkaadmin组,普通模式不需要)。 已安装Kafka客户端,客户端安装目录如“/opt/client”。 本示例需创建两个Topic,可参考7,分别命名为“test_2”和“test_3”,并创建“move-kafka-topic.json”文件,创建路径如“/opt/client/Kafka/kafka”,Topic格式内容如下: {"topics":[{"topic":"test_2"},{"topic":"test_3"}],"version":1}
  • 购买ELB并配置对接ClickHouse 购买ELB并获取其私有IP地址 详细操作步骤请参考创建共享型负载均衡器。 登录“弹性负载均衡器”控制台,在“负载均衡器”界面单击“购买弹性负载均衡”。 在“购买弹性负载均衡”界面,“实例规格类型”选择“共享型”,“所属VPC”和“子网”参数需要和MRS集群保持一致,其他参数保持默认即可。 单击“立即购买”,确认配置信息,并单击“提交”。 创建完成后,在“负载均衡器”界面,选择对应的区域即可看到新建的负载均衡器。查看并获取该负载均衡器的私有IP地址。 添加ELB监听器 详细操作步骤请参考添加监听器。
  • 上传UDF 访问Flink WebUI,请参考访问Flink WebUI。 单击“UDF管理”进入UDF管理页面。 单击“添加UDF”,在“本地Jar文件”参数后选择并上传本地已准备好的UDF jar文件。 填写UDF名称以及描述信息后,单击“确定”。 “UDF名称”最多可添加10项,“名称”可自定义,“类名”需与上传的UDF jar文件中UDF函数全限定类名一一对应。 上传UDF jar文件后,服务器默认保留5分钟,5分钟内单击确定则完成UDF创建,超时后单击确定则创建UDF失败并弹出错误提示:本地UDF文件路径有误。 在UDF列表中,可查看当前应用内所有的UDF信息。可在对应UDF信息的“操作”列编辑或删除UDF信息(只能删除未被使用的UDF项)。 (可选)如果需要立即运行或开发作业,可在“作业管理”进行相关作业配置,可参考创建作业。
  • UDF java代码及SQL样例 UDF java使用样例 package com.xxx.udf;import org.apache.flink.table.functions.ScalarFunction;public class UdfClass_UDF extends ScalarFunction { public int eval(String s) { return s.length(); }} UDF SQL使用样例 CREATE TEMPORARY FUNCTION udf as 'com.xxx.udf.UdfClass_UDF';CREATE TABLE udfSource (a VARCHAR) WITH ('connector' = 'datagen','rows-per-second'='1');CREATE TABLE udfSink (a VARCHAR,b int) WITH ('connector' = 'print');INSERT INTO udfSinkSELECT a, udf(a)FROM udfSource;
  • 使用示例 --删除表t1drop table t1 SYNC; 在删除复制表时,因为复制表需要在Zookeeper上建立一个路径,存放相关数据。ClickHouse默认的库引擎是原子数据库引擎,删除Atomic数据库中的表后,它不会立即删除,而是会在480秒后删除。在删除表时,加上SYNC字段,即可解决该问题,例如:drop table t1 SYNC; 删除本地表和分布式表,则不会出现该问题,可不带SYNC字段,例如:drop table t1;
  • 前提条件 已安装Oozie、ZooKeeper服务,且服务正常运行。 没有任务正在运行。 如果当前集群不是安装最新的版本包,需要从“$BIGDATA_HOME/FusionInsight_Porter_x.x.x/install/FusionInsight-Oozie-x.x.x/oozie-x.x.x/embedded-oozie-server/webapp/WEB-INF/lib”路径拷贝“curator-x-discovery-x.x.x.jar”包到“$BIGDATA_HOME/FusionInsight_Porter_x.x.x/install/FusionInsight-Oozie-x.x.x/oozie-x.x.x/lib”目录下。
  • 使用示例 --在default数据库和default_cluster集群下创建名为test表CREATE TABLE default.test ON CLUSTER default_cluster( `EventDate` DateTime, `id` UInt64)ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default/test', '{replica}')PARTITION BY toYYYYMM(EventDate)ORDER BY id
  • 使用示例 --查询表t1的表结构desc t1;┌─name────┬─type─┬─default_type─┬─default_expression ┬─comment─┬─codec_expression─┬─ttl_expression─┐│ id │ UInt8 │ │ │ │ │ │ │ name │ UInt8 │ │ │ │ │ │ │ address │ String │ │ │ │ │ │└───────┴────┴────────┴────────── ┴───── ┴──────────┴─────────┘
  • 基本语法 方法一:在指定的“database_name”数据库中创建一个名为“table_name ”的表。 如果建表语句中没有包含“database_name”,则默认使用客户端登录时选择的数据库作为数据库名称。 CREATE TABLE [IF NOT EXISTS] [database_name.]table_name [ON CLUSTER ClickHouse集群名] ( name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1], name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2], ... ) ENGINE = engine_name() [PARTITION BY expr_list] [ORDER BY expr_list] ClickHouse在创建表时建议携带PARTITION BY创建表分区。因为ClickHouse数据迁移工具是基于表的分区进行数据迁移,在创建表时如果不携带PARTITION BY创建表分区,则在使用ClickHouse数据迁移工具界面无法对该表进行数据迁移。 方法二:创建一个与database_name2.table_name2具有相同结构的表,同时可以对其指定不同的表引擎声明。 如果没有表引擎声明,则创建的表将与database_name2.table_name2使用相同的表引擎。 CREATE TABLE [IF NOT EXISTS] [database_name.]table_name AS [database_name2.]table_name2 [ENGINE = engine_name] 方法三:使用指定的引擎创建一个与SELECT子句的结果具有相同结构的表,并使用SELECT子句的结果填充它。 CREATE TABLE [IF NOT EXISTS] [database_name.]table_name ENGINE = engine_name AS SELECT ...
  • 使用示例 --查看ClickHouse集群信息select * from system.clusters;--显示当前节点设置的宏select * from system.macros;--查看数据库容量selectsum(rows) as "总行数",formatReadableSize(sum(data_uncompressed_bytes)) as "原始大小",formatReadableSize(sum(data_compressed_bytes)) as "压缩大小",round(sum(data_compressed_bytes) / sum(data_uncompressed_bytes) * 100,0) "压缩率"from system.parts;--查询test表容量。where条件根据实际情况添加修改selectsum(rows) as "总行数",formatReadableSize(sum(data_uncompressed_bytes)) as "原始大小",formatReadableSize(sum(data_compressed_bytes)) as "压缩大小",round(sum(data_compressed_bytes) / sum(data_uncompressed_bytes) * 100,0) "压缩率"from system.partswhere table in ('test')and partition like '2020-11-%'group by table;
  • 使用示例 --给表t1增加列test01 ALTER TABLE t1 ADD COLUMN test01 String DEFAULT 'defaultvalue';--查询修改后的表t1desc t1┌─name────┬─type─┬─default_type─┬─default_expression ┬─comment─┬─codec_expression─┬─ttl_expression─┐│ id │ UInt8 │ │ │ │ │ │ │ name │ String │ │ │ │ │ │ │ address │ String │ │ │ │ │ ││ test01 │ String │ DEFAULT │ 'defaultvalue' │ │ │ │└───────┴────┴────────┴────────── ┴───── ┴──────────┴─────────┘--修改表t1列name类型为UInt8ALTER TABLE t1 MODIFY COLUMN name UInt8;--查询修改后的表t1desc t1┌─name────┬─type─┬─default_type─┬─default_expression ┬─comment─┬─codec_expression─┬─ttl_expression─┐│ id │ UInt8 │ │ │ │ │ │ │ name │ UInt8 │ │ │ │ │ │ │ address │ String │ │ │ │ │ ││ test01 │ String │ DEFAULT │ 'defaultvalue' │ │ │ │└───────┴────┴────────┴────────── ┴───── ┴──────────┴─────────┘--删除表t1的列test01ALTER TABLE t1 DROP COLUMN test01;--查询修改后的表t1desc t1┌─name────┬─type─┬─default_type─┬─default_expression ┬─comment─┬─codec_expression─┬─ttl_expression─┐│ id │ UInt8 │ │ │ │ │ │ │ name │ UInt8 │ │ │ │ │ │ │ address │ String │ │ │ │ │ │└───────┴────┴────────┴────────── ┴───── ┴──────────┴─────────┘
  • 基本语法 CREATE DATABASE [IF NOT EXISTS] database_name [ON CLUSTER ClickHouse集群名] ON CLUSTER ClickHouse集群名的语法,使得该DDL语句执行一次即可在集群中所有实例上都执行。集群名信息可以使用以下语句的cluster字段获取: select cluster,shard_num,replica_num,host_name from system.clusters;
  • 前提条件 创建或获取该任务中创建Loader作业的业务用户和密码。 确保用户已授权访问作业执行时操作的HDFS目录和数据。 ClickHouse相关表已创建,并确保用户已授权访问作业执行时操作该表的权限。 检查磁盘空间,确保没有出现告警且余量满足导入、导出数据的大小。 使用Loader从HDFS导入数据时,确保HDFS输入路径目录名、输入路径的子目录名及子文件名不能包含特殊字符/\"':;,中的任意字符。 如果设置的作业需要使用指定YARN队列功能,该用户需要已授权有相关YARN队列的权限。 设置任务的用户需要获取该任务的执行权限,并获取该任务对应的连接的使用权限。
  • 前提条件 ClickHouse服务运行正常,Zookeeper服务运行正常,迁入、迁出节点的ClickHouseServer实例状态正常。 请确保迁入节点已有待迁移数据表,且确保该表是MergeTree系列引擎的分区表。 创建迁移任务前请确保所有对待迁移数据表的写入任务已停止,且任务启动后,只允许对待迁移数据表进行查询操作,禁止对该表进行写入、删除等操作,否则可能会造成迁移前后数据不一致。 迁入节点的ClickHouse数据目录有足够的空间。
  • 样例 通过“CSV文件输入”算子,生成十二个字段。 源文件如下: 创建ClickHouse表的语句如下: CREATE TABLE IF NOT EXISTS testck4 ON CLUSTER default_cluster( a Int32, b VARCHAR(100) NOT NULL, c char(100), d DateTime, e DateTime, f DateTime, g smallint, h bigint, l Float32, j Float64, k decimal(10,2), m boolean ) ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/default/testck4', '{replica}') PARTITION BY toYYYYMM(d)ORDER BY a; 配置“ClickHouse输出”算子,如下图: 作业执行成功后,查看testck4表中数据:
  • 解决方法 JDBC应该: 登录FusionInsight Manager管理界面,修改JDBCServer的参数“spark.authenticate.enableSaslEncryption”值为“false”,并重启对应的实例。 客户端作业: 客户端应用在提交应用的时候,修改spark-defaults.conf配置文件的“spark.authenticate.enableSaslEncryption”值为“false”。
  • 配置场景 当Spark开启事件日志模式,即设置“spark.eventLog.enabled”为“true”时,就会往配置的一个日志文件中写事件,记录程序的运行过程。当程序运行很久,job很多,task很多时就会造成日志文件很大,如JDBCServer、Spark Streaming程序。 而日志回滚功能是指在写事件日志时,将元数据事件(EnviromentUpdate,BlockManagerAdded,BlockManagerRemoved,UnpersistRDD,ExecutorAdded,ExecutorRemoved,MetricsUpdate,ApplicationStart,ApplicationEnd,LogStart)写入日志文件中,Job事件(StageSubmitted, StageCompleted, TaskResubmit, TaskStart,TaskEnd, TaskGettingResult, JobStart,JobEnd)按文件的大小进行决定是否写入新的日志文件。对于Spark SQL的应用,Job事件还包含ExecutionStart、ExecutionEnd。 Spark中有个HistoryServer服务,其UI页面就是通过读取解析这些日志文件获得的。在启动HistoryServer进程时,内存大小就已经定了。因此当日志文件很大时,加载解析这些文件就可能会造成内存不足,driver gc等问题。 所以为了在小内存模式下能加载较大日志文件,需要对大应用开启日志滚动功能。一般情况下,长时间运行的应用建议打开该功能。
  • 单表并发控制配置 参数 描述 默认值 hoodie.write.lock.provider 指定lock provider,不建议使用默认值,使用org.apache.hudi.hive.HiveMetastoreBasedLockProvider org.apache.hudi.client.transaction.lock.ZookeeperBasedLockProvider hoodie.write.lock.hivemetastore.database Hive的database 无 hoodie.write.lock.hivemetastore.table Hive的table name 无 hoodie.write.lock.client.num_retries 重试次数 10 hoodie.write.lock.client.wait_time_ms_between_retry 重试间隔 10000 hoodie.write.lock.conflict.resolution.strategy lock provider类,必须是ConflictResolutionStrategy的子类 org.apache.hudi.client.transaction.SimpleConcurrentFileWritesConflictResolutionStrategy hoodie.write.lock.zookeeper.base_path 存放ZNodes的路径,同一张表的并发写入需配置一致 无 hoodie.write.lock.zookeeper.lock_key ZNode的名称,建议与Hudi表名相同 无 hoodie.write.lock.zookeeper.connection_timeout_ms zk连接超时时间 15000 hoodie.write.lock.zookeeper.port zk端口号 无 hoodie.write.lock.zookeeper.url zk的url 无 hoodie.write.lock.zookeeper.session_timeout_ms zk的session过期时间 60000 父主题: 配置参考
共100000条