使用Loader从HDFS导出数据到MOTService
操作场景
本章节适用于MRS 3.3.0及之后版本。
在MOTService中需要根据表中数据版本字段对表进行更新操作,MOTService外部表不支持Upsert语句,您可以使用Loader将文件从HDFS导出到MOTService从而批量更新数据。
前提条件
- 获取关系型数据库使用的用户和密码。
- 输入的数据需为CSV格式文件。
- 在FusionInsight Manager中创建一个人机用户,例如“Loaderuser”,加入用户组hive、hadoop,主组选择“hadoop”组,关联角色“Manager_administrator”。
操作步骤
准备操作
- 使用root用户登录RTDServer所在节点,获取关系型数据库对应的驱动Jar包,本场景需要获取“opengaussjdbc-V500R002C00.jar”。
cd ${BIGDATA_HOME}/FusionInsight_FARMER_RTD_*/install/FusionInsight-RTD-*/RTD/rtdservice/WEB-INF/lib
- 将1获取到的Jar包保存在Loader服务主备节点的lib路径“${BIGDATA_HOME}/FusionInsight_Porter_*/install/FusionInsight-Sqoop-*/FusionInsight-Sqoop-*/server/webapps/loader/WEB-INF/ext-lib”。
- 使用root用户在主备节点分别执行以下命令修改Jar包权限:
cd ${BIGDATA_HOME}/FusionInsight_Porter_*/install/FusionInsight-Sqoop-*/FusionInsight-Sqoop-*/server/webapps/loader/WEB-INF/ext-lib
chown omm:wheel jar包文件名
chmod 600 jar包文件名
- 登录FusionInsight Manager系统,选择“集群 > 服务 > Loader > 更多 > 重启服务”,输入管理员密码重启Loader服务。
- 需要提前在MOTService中创建版本管控表并在表中增加特定字段用于版本管控,如果存在则不需要创建。所有MOT类型(全量或增量)作业共用一张表,参考命令如下:
CREATE TABLE T_RTD_TBL_CUR_VER_INFO (
TBL_NAME varchar NOT NULL,
CUR_VER_FLAG tinyint DEFAULT '0' NOT NULL,
CONSTRAINT PK_T_RTD_TBL_CUR_VER_INFO PRIMARY KEY (TBL_NAME)
);
设置作业基本信息
- 登录“Loader WebUI”界面。
- 登录FusionInsight Manager系统,具体请参见访问集群Manager。
- 选择“集群 > 服务 > Loader”。
- 单击“LoaderServer(节点名称,主)”打开“Loader WebUI”界面。
图1 Loader WebUI界面
- 单击“新建作业”,进入“基本信息”界面,创建作业基本信息。
图2 “基本信息”界面
- 在“名称”中输入作业的名称。
- 在“类型”中选择“导出”。
- 在“组”中设置作业所属组,默认没有已创建的组,单击“添加”创建一个新的组,输入组的名称,单击“确定”保存。
- 在“队列”中选择执行该作业的YARN队列。默认值“root.default”。
- 在“优先级”中选择执行该作业的YARN队列优先级。默认值为“NORMAL”。可选值为“VERY_LOW”、“LOW”、“NORMAL”、“HIGH”和“VERY_HIGH”。
- 在“连接”区域,单击“添加”新建一个的连接,在“连接器”中选择“generic-jdbc-connector”,输入配置连接参数,单击“测试”验证连接是否可用,待提示“测试成功”后单击“确定”。
表1 “generic-jdbc-connector”连接参数 参数名
说明
示例
名称
关系型数据库连接的名称。
dbName
JDBC驱动程序类
JDBC驱动类名。
com.huawei.opengauss.jdbc.Driver
JDBC连接字符串
JDBC连接字符串,格式为:
jdbc:opengauss://数据库访问地址:数据库访问端口号/数据库名称
jdbc:opengauss://10.10.10.10:15400/test
用户名
连接数据库使用的用户名。
omm
密码
连接数据库使用的密码。
xxxx
JDBC连接属性
JDBC连接属性,单击“添加”手动添加。
- 名称:连接属性名
- 值:连接属性值
- 名称:socketTimeout
- 值:20
说明:
登录FusionInsight Manager,选择“集群 > 服务 > MOTService > 配置 > 全部配置”,搜索参数“REQUIRE_SSL”如果参数值为“true”,此时需要添加名称为“ssl.enable”,值为“true”的JDBC连接属性,否则不需要添加此连接属性。
设置数据源信息
- 单击“下一步”,进入“输入设置”界面,在“源文件类型”中选择“HDFS”,设置数据源信息。
表2 数据来源配置参数 参数名
解释说明
示例
输入目录
从HDFS导出时的输入路径。
说明:路径参数可以使用宏定义,具体请参考Loader算子配置项中使用宏定义。
/user/test
路径过滤器
配置通配符对源文件的输入路径包含的目录进行过滤。“输入目录”不参与过滤。配置多个过滤条件时使用“,”隔开,配置为空时表示不过滤目录。不支持正则表达式过滤。
- “?”匹配单个字符。
- “*”配置多个字符。
- 在匹配条件前加“^”表示取反,即文件过滤。
*
文件过滤器
配置通配符对源文件的输入文件名进行过滤。配置多个过滤条件时使用“,”隔开。不能配置为空。不支持正则表达式过滤。
- “?”匹配单个字符。
- “*”配置多个字符。
- 在匹配条件前加“^”表示取反,即文件过滤。
*
文件类型
文件导入类型:
- “TEXT_FILE”:导入文本文件并保存为文本文件。
- “SEQUENCE_FILE”:导入文本文件并保存为sequence file文件格式。
- “BINARY_FILE”:以二进制流的方式导入文件,可以导入任何格式的文件,不对文件做任何处理。
说明:文件类型选择“TEXT_FILE”或“SEQUENCE_FILE”导入时,Loader会自动根据文件的后缀选择对应的解压方法,对文件进行解压。
TEXT_FILE
文件分割方式
选择按文件或大小分割源文件,作为数据导出的MapReduce任务中各个map的输入文件。
- 选择“FILE”,表示按文件分割源文件,即每个map处理一个或多个完整的源文件,同一个源文件不可分配至不同map,完成数据导入后保持源文件的目录结构。
- 选择“SIZE”,表示按大小分割源文件,即每个map处理一定大小的输入文件,同一个源文件可分割至多个map,数据保存至输出目录时保存的文件数与map数量相同,文件名格式为“import_part_xxxx”,“xxxx”为系统生成的随机数,具有唯一性。
FILE
Map数
配置数据操作的MapReduce任务中同时启动的Map数量。不可与“Map数据块大小”同时配置。参数值必须小于或等于3000。
20
Map数据块大小
配置数据操作的MapReduce任务中启动map所处理的数据大小,单位为MB。参数值必须大于或等于100,建议配置值为1000。不可与“Map数”同时配置。当使用关系型数据库连接器时,不支持“Map数据块大小”,请配置“Map数”。
-
设置数据转换
- 单击“下一步”,进入“转换”界面,设置数据传输过程中的转换操作。算子的选择和参数设置具体请参考Loader算子帮助及表3。
在“输入”中把“CSV文件输入”拖拽到网格中,在“输出”中把“表输出”拖拽到网格中,“输入”与“输出”之间用箭头进行连接。
设置数据保存信息并运行作业
- 单击“下一步”,进入“输出设置”界面参考下表填写参数。
表4 输出设置参数 参数名
说明
示例
架构名称
数据库模式名。
dbo
表名
数据库表名,用于最终保存传输的数据。
test
临时表名
数据库临时表名用于临时保存传输过程中的数据,字段需要和“表名”配置的表一致。
db_test
数据库类型
数据库类型,分为MOT和其他可用JDBC连接的数据库。
MOT
MOT导入方式
“数据库类型”选择“MOT”时存在,根据业务需要选择相应导入方式。
TOTAL
- 单击“保存并运行”,开始保存并运行作业。
查看作业完成情况
- 进入“Loader WebUI”界面,待“状态”显示“成功”则说明作业完成。