华为云用户手册

  • 参数描述 表1 CREATE TABLE As SELECT参数描述 参数 描述 database_name Database名称,由字母、数字和下划线(_)组成。 table_name Database中的表名,由字母、数字和下划线(_)组成。 using 参数hudi,定义和创建Hudi table。 table_comment 表的描述信息。 location_path HDFS路径,指定该路径Hudi表会创建为外表。 options_list Hudi table属性列表。 query_statement select查询表达式
  • 示例 创建分区表 create table h2 using hudi options (type = 'cow', primaryKey = 'id') partitioned by (dt) as select 1 as id, 'a1' as name, 10 as price, 1000 as dt; 创建非分区表 create table h3 using hudi as select 1 as id, 'a1' as name, 10 as price; 从parquet表加载数据到hudi表 # 创建parquet表 create table parquet_mngd using parquet options(path=’hdfs:///tmp/parquet_dataset/*.parquet’); # CTAS创建hudi表 create table hudi_tbl using hudi location 'hdfs:///tmp/hudi/hudi_tbl/' options ( type = 'cow', primaryKey = 'id', preCombineField = 'ts' ) partitioned by (datestr) as select * from parquet_mngd;
  • 注意事项 Hudi当前不支持使用char、varchar、tinyint、smallint类型,建议使用string或int类型。 Hudi当前只有int、bigint、float、double、decimal、string、date、timestamp、boolean、binary类型支持设置默认值。 Hudi表必须指定primaryKey与preCombineField。 在指定路径下创建表时,如果路径下已存在Hudi表,则建表时不需要指定列。
  • 参数描述 表1 CREATE TABLE参数描述 参数 描述 database_name Database名称,由字母、数字和下划线(_)组成。 table_name Database中的表名,由字母、数字和下划线(_)组成。 columnTypeList 以逗号分隔的带数据类型的列表。列名由字母、数字和下划线(_)组成。 using 参数hudi,定义和创建Hudi table。 table_comment 表的描述信息。 location_path HDFS路径,指定该路径Hudi表会创建为外表。 options_list Hudi table属性列表。
  • 示例 创建非分区表 create table if not exists hudi_table0 ( id int, name string, price double ) using hudi options ( type = 'cow', primaryKey = 'id', preCombineField = 'price' ); 创建分区表 create table if not exists hudi_table_p0 ( id bigint, name string, ts bigint, dt string, hh string ) using hudi options ( type = 'cow', primaryKey = 'id', preCombineField = 'ts' ) partitioned by (dt, hh); 在指定路径下创建表 create table if not exists h3( id bigint, name string, price double ) using hudi options ( primaryKey = 'id', preCombineField = 'price' ) location '/path/to/hudi/h3';
  • 约束 支持在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设置的一致。
  • WITH主要参数说明 配置项 是否必选 类型 描述 connector 必选 String 指定要使用的连接器,Kafka使用“kafka” topic kafka作为sink,必选 kafka作为source,可选 String 主题名称 当表用作source时,要从中读取数据的主题名称。支持主题列表,通过按分号分隔主题,如“主题-1;主题-2” 当表用作sink时,主题名称为写入数据的主题。sink不支持主题列表 topic-pattern kafka作为source时可选 String 主题模式 当表用作source时可设置该参数,主题名称需使用正则表达式 说明: 不能同时设置“topic-pattern” 和“topic” 。 properties.bootstrap.servers 必选 String Kafka broker列表,以逗号分隔 properties.group.id kafka作为source时必选 String Kafka的使用者组ID format 必选 String 用于反序列化和序列化Kafka消息的值部分的格式 properties.* 可选 String 安全模式下需增加认证相关的参数 scan.topic-partition-discovery.interval 可选 Duration 消费者定时动态发现创建的Partition的时间间隔。默认值:5min。
  • Flink对接HDFS分区 Flink对接HDFS支持自定义分区。 Flink文件系统分区支持使用标准的Hive格式。不需要将分区预先注册到表目录中,分区是根据目录结构推断。 例如,根据下面的目录分区的表将被推断为包含日期时间和小时分区。 path └── datetime=2021-09-03 └── hour=11 ├── part-0.parquet ├── part-1.parquet └── hour=12 ├── part-0.parquet └── datetime=2021-09-24 └── hour=6 ├── part-0.parquet 分区文件的滚动策略。 分区目录中的数据被拆分为part文件,每个分区将至少包含一个part文件,用于接收sink的子任务的数据写入。 如下参数介绍分区文件如何进行滚动。 表1 分区文件的滚动策略 配置项 默认值 类型 描述 sink.rolling-policy.file-size 128MB MemorySize 分区文件达到该阈值后,进行滚动。 sink.rolling-policy.rollover-interval 30min Duration 分区文件在滚动前可以保持打开的最长持续时间。 sink.rolling-policy.check-interval 1min Duration 检查基于时间的滚动策略的时间间隔。 分区目录的文件合并。 支持文件压缩,允许应用程序具有更小的检查点间隔,而无需生成大量文件。 仅压缩单个检查点中的文件,即生成的文件数量至少与检查点数量相同。合并前的文件是不可见的,因此文件的可见性是:检查点间隔+压缩时间之后。如果压缩时间太长,将延长检查点的时间段。 表2 分区目录的文件合并 配置项 默认值 类型 描述 auto-compaction false Boolean 是否启用自动压缩。数据将写入临时文件。检查点完成后,检查点生成的临时文件将被压缩。压缩前临时文件不可见。 compaction.file-size none MemorySize 压缩目标文件大小,默认值为滚动文件大小。 分区文件的提交。 文件写入分区后,通常需要通知下游应用程序。如将分区添加到Hive元存储中,或在目录中写入_SUC CES S文件。分区文件的提交操作基于触发器和策略的组合方式。 表3 分区文件提交触发器相关配置 配置项 默认值 类型 描述 sink.partition-commit.trigger process-time String process-time:基于计算节点的系统时间,它既不需要分区时间提取,也不需要生成watermark。即“当前系统时间”超过“分区创建时的系统时间”加上“延迟”时间,就提交分区。 partition-time:基于从分区提取的时间,它需要生成watermark。即“watermark时间”超过“从分区提取的时间”加上“延迟”时间,就提交分区。 sink.partition-commit.delay 0 s Duration 分区在延迟时间之前不会提交。如果是每日分区,则应为“1 d”,如果是每小时分区,则应为“1 h”。 表4 分区文件提交策略相关配置 配置项 默认值 类型 描述 sink.partition-commit.policy.kind - String 提交分区的策略。 metastore:将分区添加到元存储。只有hive表支持元存储策略,文件系统通过目录结构管理分区。 success-file:将success-file文件添加到目录中。 两者可以同时配置,即:'sink.partition-commit.policy.kind'='metastore,success-file'。 sink.partition-commit.policy.class - String 用于实现分区提交策略接口的分区提交策略类。 仅在自定义提交策略中生效。 sink.partition-commit.success-file.name _SUCCESS String success-file分区提交策略的文件名,默认值为_SUCCESS。
  • 使用HetuEngine UDF 使用客户端访问: 进入HetuEngine客户端。 执行如下命令创建HetuEngine UDF: CREATE FUNCTION example.namespace01.add_two ( num integer ) RETURNS integer LANGUAGE JAVA DETERMINISTIC SYMBOL "com.xxx.bigdata.hetuengine.functions.AddTwo" URI "hdfs://hacluster/udf/hetuserver/udf-test-0.0.1-SNAPSHOT.jar"; 执行如下命令使用HetuEngine UDF: select example.namespace01.add_two(2); _col0 ------- 4 (1 row) 函数实现类中通过重载方法来区分同名的不同函数,在创建HetuEngine UDF时要指定不同的函数名称。
  • 操作步骤 使用Ranger管理员用户rangeradmin登录Ranger管理页面,具体操作可参考登录Ranger WebUI界面。 在首页中单击“CDL”区域的组件插件名称,例如“CDL”。 单击“Add New Policy”,添加CDL权限控制策略。 根据业务需求配置相关参数。 表1 CDL权限参数 参数名称 描述 Policy Type Access。 Policy Conditions IP过滤策略,可自定义,配置当前策略适用的主机节点,可填写一个或多个IP或IP段,并且IP填写支持“*”通配符,例如:192.168.1.10,192.168.1.20或者192.168.1.*。 Policy Name 策略名称,可自定义,不能与本服务内其他策略名称重复。 Policy Label 为当前策略指定一个标签,您可以根据这些标签搜索报告和筛选策略。 job 配置当前策略适用的job名,可以填写多个值。这里支持通配符,例如:test、test*、*。 “Include”策略适用于当前输入的对象,“Exclude”表示策略适用于除去当前输入内容之外的其他对象。 Description 策略描述信息。 Audit Logging 是否审计此策略。 Allow Conditions 策略允许条件,配置本策略内允许的权限及例外,例外条件优先级高于正常条件。 在“Select Role”、“Select Group”、“Select User”列选择已创建好的需要授予权限的Role、用户组或用户。 单击“Add Conditions”,添加策略适用的IP地址范围,单击“Add Permissions”,添加对应权限。 Create: 创建权限。 Execute:执行权限。 Delete: 删除权限。 Update:更新权限。 Get:获取信息权限。 Select/Deselect All:全选/取消全选。 如需添加多条权限控制规则,可单击按钮添加。 如需当前条件中的用户或用户组管理本条策略,可勾选“Delegate Admin”,这些用户将成为受委托的管理员。被委托的管理员可以更新、删除本策略,它还可以基于原始策略创建子策略。 Deny Conditions 策略拒绝条件,配置本策略内拒绝的权限及例外,配置方法与“Allow Conditions”类型,拒绝条件的优先级高于“Allow Conditions”中配置的允许条件。 表2 设置权限 任务场景 角色授权操作 设置CDL管理员权限 在首页中单击“CDL”区域的组件插件名称,例如“CDL”。 分别选择“Policy Name”为“all - job”、“all - link”、“all - driver”、“all - env”的策略,单击按钮编辑策略。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Select/Deselect All”。 设置用户对CDL作业的所有管理权限 在“job”选择CDL作业名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Select/Deselect All”。 设置用户对CDL作业的创建权限 在“job”选择CDL作业名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Create”。 说明: 默认场景下,所有用户均具有“Create”权限。 设置用户对CDL作业的删除权限 在“job”选择CDL作业名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Delete”。 设置用户对CDL作业的信息获取权限 在“job”选择CDL作业名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Get”。 设置用户对CDL作业的执行权限 在“job”选择CDL作业名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Execute”。 设置用户对CDL数据连接的所有管理权限 在“link”右侧选择CDL数据连接名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Select/Deselect All”。 设置用户对CDL数据连接的创建权限 在“link”右侧选择CDL数据连接名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Create”。 说明: 默认场景下,所有用户均具有“Create”权限。 设置用户对CDL数据连接的删除权限 在“link”右侧选择CDL数据连接名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Delete”。 设置用户对CDL数据连接的更新权限 在“link”右侧选择CDL数据连接名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Update”。 设置用户对CDL数据连接的信息获取权限 在“link”右侧选择CDL数据连接名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Get”。 设置用户对CDL驱动的所有管理权限 在“driver”右侧选择CDL驱动名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Select/Deselect All”。 设置用户对CDL驱动的删除权限 在“driver”右侧选择CDL驱动名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Delete”。 设置用户对CDL驱动的更新权限 在“driver”右侧选择CDL驱动名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Update”。 设置用户对CDL驱动的信息获取权限 在“driver”右侧选择CDL驱动名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Get”。 设置用户对CDL环境变量的所有管理权限 在“env”右侧选择CDL环境变量名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Select/Deselect All”。 设置用户对CDL环境变量的创建权限 在“env”右侧选择CDL环境变量名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Create”。 说明: 默认场景下,所有用户均具有“Create”权限。 设置用户对CDL环境变量的删除权限 在“env”右侧选择CDL环境变量名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Delete”。 设置用户对CDL环境变量的更新权限 在“env”右侧选择CDL环境变量名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Update”。 设置用户对CDL环境变量的信息获取权限 在“env”右侧选择CDL环境变量名。 在“Allow Conditions”区域,单击“Select User”下选择框选择用户。 单击“Add Permissions”,勾选“Get”。 (可选)添加策略有效期。在页面右上角单击“Add Validity period”,设置“Start Time”和“End Time”,选择“Time Zone”。单击“Save”保存。如需添加多条策略有效期,可单击按钮添加。如需删除策略有效期,可单击按钮删除。 单击“Add”,在策略列表可查看策略的基本信息。等待策略生效后,验证相关权限是否正常。 如需禁用某条策略,可单击按钮编辑策略,设置策略开关为“Disabled”。 如果不再使用策略,可单击按钮删除策略。
  • 前提条件 已获取待连接数据库对应的驱动Jar包。 仅数据源MySQL、Oracle( MRS 3.3.0及之后版本支持)需要上传相应的驱动,驱动对应的版本号如表1所示,且驱动需要在MySQL或Oracle官网下载。 表1 MySQL、Oracle数据源支持的驱动 数据源 支持的驱动包 MySQL mysql-connector-java-8.0.24.jar Oracle(MRS 3.3.0及之后版本支持) ojdbc8-12.2.0.1.jar 此处Oracle仅作为ThirdKafka数据源使用。 开启Kerberos认证的集群需已参考CDL用户权限管理创建具有CDL管理操作权限的用户。
  • 操作场景 在使用CDL服务前,需集群管理员创建用户并指定其操作权限以满足业务使用需求。 CDL用户分为管理员用户和普通用户,系统默认的CDL管理员用户组为“cdladmin”,CDL普通用户对应用户组为“cdl”。 关联了“cdladmin”用户组的用户可以执行CDL的任何操作。 关联了“cdl”用户组的用户可以执行CDL的创建和查询操作。 启用了Ranger鉴权时,如果用户创建后需要继续为用户配置创建、执行、查询、删除权限,请参考添加CDL的Ranger访问权限策略。 对于手动停用了Ranger鉴权的集群,可参考MRS集群服务启用Ranger鉴权章节重新启用Ranger鉴权。 该章节内容仅适用于开启了Kerberos认证的集群。
  • 前提条件 已安装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”目录下。
  • 购买ELB并配置对接ClickHouse 购买ELB并获取其私有IP地址 详细操作步骤请参考创建共享型负载均衡器。 登录“弹性负载均衡器”控制台,在“负载均衡器”界面单击“购买弹性负载均衡”。 在“购买弹性负载均衡”界面,“实例规格类型”选择“共享型”,“所属VPC”和“子网”参数需要和MRS集群保持一致,其他参数保持默认即可。 单击“立即购买”,确认配置信息,并单击“提交”。 创建完成后,在“负载均衡器”界面,选择对应的区域即可看到新建的负载均衡器。查看并获取该负载均衡器的私有IP地址。 添加ELB监听器 详细操作步骤请参考添加监听器。
  • 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 udfSink SELECT a, udf(a) FROM udfSource;
  • 上传UDF至FlinkServer 准备UDF jar文件,大小不能超过200MB。 访问Flink WebUI,请参考访问FlinkServer 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项)。 (可选)如果需要立即运行或开发作业,可在“作业管理”进行相关作业配置,可参考如何创建FlinkServer作业。
  • 使用示例 --删除表t1 drop table t1 SYNC; 在删除复制表时,因为复制表需要在Zookeeper上建立一个路径,存放相关数据。ClickHouse默认的库引擎是原子数据库引擎,删除Atomic数据库中的表后,它不会立即删除,而是会在480秒后删除。在删除表时,加上SYNC字段,即可解决该问题,例如:drop table t1 SYNC; 删除本地表和分布式表,则不会出现该问题,可不带SYNC字段,例如:drop table t1;
  • 使用示例 --给表t1增加列test01 ALTER TABLE t1 ADD COLUMN test01 String DEFAULT 'defaultvalue'; --查询修改后的表t1 desc t1 ┌─name────┬─type─┬─default_type─┬─default_expression ┬─comment─┬─codec_expression─┬─ttl_expression─┐ │ id │ UInt8 │ │ │ │ │ │ │ name │ String │ │ │ │ │ │ │ address │ String │ │ │ │ │ │ │ test01 │ String │ DEFAULT │ 'defaultvalue' │ │ │ │ └───────┴────┴────────┴────────── ┴───── ┴──────────┴─────────┘ --修改表t1列name类型为UInt8 ALTER TABLE t1 MODIFY COLUMN name UInt8; --查询修改后的表t1 desc t1 ┌─name────┬─type─┬─default_type─┬─default_expression ┬─comment─┬─codec_expression─┬─ttl_expression─┐ │ id │ UInt8 │ │ │ │ │ │ │ name │ UInt8 │ │ │ │ │ │ │ address │ String │ │ │ │ │ │ │ test01 │ String │ DEFAULT │ 'defaultvalue' │ │ │ │ └───────┴────┴────────┴────────── ┴───── ┴──────────┴─────────┘ --删除表t1的列test01 ALTER TABLE t1 DROP COLUMN test01; --查询修改后的表t1 desc t1 ┌─name────┬─type─┬─default_type─┬─default_expression ┬─comment─┬─codec_expression─┬─ttl_expression─┐ │ id │ UInt8 │ │ │ │ │ │ │ name │ UInt8 │ │ │ │ │ │ │ address │ String │ │ │ │ │ │ └───────┴────┴────────┴────────── ┴───── ┴──────────┴─────────┘
  • 使用示例 --查看ClickHouse集群信息 select * from system.clusters; --显示当前节点设置的宏 select * from system.macros; --查看数据库容量 select sum(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条件根据实际情况添加修改 select sum(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 where table in ('test') and partition like '2020-11-%' group by table;
  • 使用示例 --在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
  • 基本语法 方法一:在指定的“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创建表分区,则在集群内ClickHouseServer节点间数据迁移界面无法对该表进行数据迁移。 方法二:创建一个与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 ...
  • 基本语法 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;
  • 前提条件 ClickHouse服务运行正常,Zookeeper服务运行正常,迁入、迁出节点的ClickHouseServer实例状态正常。 请确保迁入节点已有待迁移数据表,且确保该表是MergeTree系列引擎的分区表。 创建迁移任务前请确保所有对待迁移数据表的写入任务已停止,且任务启动后,只允许对待迁移数据表进行查询操作,禁止对该表进行写入、删除等操作,否则可能会造成迁移前后数据不一致。 迁入节点的ClickHouse数据目录有足够的空间。
  • 前提条件 集群已安装HDFS、Yarn、Kafka、Flink和Hive(且服务名称必须为Hive)等服务。 包含Hive服务的客户端已安装,安装路径如:/opt/client。 Flink支持1.12.2及以后版本,Hive支持3.1.0及以后版本。 参考创建FlinkServer权限角色创建一个具有FlinkServer管理员权限的用户用于访问Flink WebUI,如:flink_admin。 参考创建FlinkServer集群连接步骤中的“说明”获取访问Flink WebUI用户的客户端配置文件及用户凭据。
  • 样例 通过“ CS V文件输入”算子,生成十二个字段。 源文件如下: 创建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”。
  • 前提条件 创建或获取该任务中创建Loader作业的业务用户和密码。 确保用户已授权访问作业执行时操作的HDFS目录和数据。 ClickHouse相关表已创建,并确保用户已授权访问作业执行时操作该表的权限。 检查磁盘空间,确保没有出现告警且余量满足导入、导出数据的大小。 使用Loader从HDFS导入数据时,确保HDFS输入路径目录名、输入路径的子目录名及子文件名不能包含特殊字符/\"':;,中的任意字符。 如果设置的作业需要使用指定YARN队列功能,该用户需要已授权有相关YARN队列的权限。 设置任务的用户需要获取该任务的执行权限,并获取该任务对应的连接的使用权限。
  • 配置场景 当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等问题。 所以为了在小内存模式下能加载较大日志文件,需要对大应用开启日志滚动功能。一般情况下,长时间运行的应用建议打开该功能。
  • 日志级别 IoTDB提供了如表2所示的日志级别。 日志的级别优先级从高到低分别是ERROR、WARN、INFO、DEBUG,程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。 表2 日志级别 级别 描述 ERROR ERROR表示系统运行的错误信息。 WARN WARN表示当前事件处理存在异常信息。 INFO INFO表示记录系统及各事件正常运行状态信息。 DEBUG DEBUG表示记录系统及系统的调试信息。 如果您需要修改日志级别,请执行如下操作: 参考修改集群服务配置参数,进入IoTDB服务“全部配置”页面。 在左侧导航栏选择需修改的角色所对应的日志菜单。 选择所需修改的日志级别并保存。 配置IoTDB日志级别60秒后即可生效,无需重启服务。
  • 添加ClickHouse数据源约束 HetuEngine支持对接ClickHouse操作的SQL语法:SHOW CATA LOG S/SCHEMAS/TABLES/COLUMNS、DESCRIBE、USE、SELECT 表/视图。 HetuEngine支持对接ClickHouse操作的表和视图: 名称 支持对接ClickHouse操作的表、视图 HetuEngine支持对ClickHouse操作的表 本地表(MergeTree) 复制表(ReplicatedReplacingMergeTree) 分布式表(Distributed) HetuEngine支持对ClickHouse操作的视图 普通视图(Normal) 物化视图(Materialized)
共100000条