
# 使用Loader导出数据
#### 操作场景
该任务指导用户完成将数据从MRS导出到外部的数据源的工作。
一般情况下，用户可以手工在Loader界面管理数据导入导出作业。当用户需要通过shell脚本来更新与运行Loader作业时，必须对已安装的Loader客户端进行配置。
#### 前提条件
- 创建或获取该任务中创建Loader作业的业务用户和密码。
- 确保用户已授权访问作业执行时操作的目录、HBase表和数据。
- 获取外部数据源（SFTP服务器或关系型数据库）使用的用户和密码。
- 检查磁盘空间，确保没有出现告警且余量满足导入、导出数据的大小。
- 使用Loader从HDFS/OBS导出数据时，确保HDFS/OBS数据源的输入路径目录名、输入路径的子目录名及子文件名不能包含特殊字符**/\\"':;,**中的任意字符。
- 如果设置的任务需要使用指定Yarn队列功能，该用户需要已授权有相关Yarn队列的权限。
- 设置任务的用户需要获取该任务的执行权限，并获取该任务对应的连接的使用权限。
 
#### 操作步骤
1. 是否第一次从Loader导出数据到关系型数据库？ 
   - 是，执行[2]。
   
   - 否，执行[3]。
   
   
   
   
2. 修改关系型数据库对应的驱动jar包文件权限。
   
   1. 获取关系型数据库对应的驱动jar包保存在Loader服务主备节点的lib路径："${BIGDATA_HOME}/FusionInsight_Porter_8.1.0.1/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib"。
   
   2. 使用**root** 用户在主备节点分别执行以下命令修改权限：
      **cd** **${BIGDATA_HOME}/FusionInsight_Porter_8.1.0.1** **/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib**
      **chown omm:wheel** *jar* *包文件名*
      **chmod 600** *jar* *包文件名*
      
   
   3. 登录FusionInsight Manager系统，选择"集群 \> *待操作集群的名称* \> 服务 \> Loader \> 更多 \> 重启服务"输入管理员密码重启Loader服务。
   
   
   
   
3. 登录"Loader WebUI"界面。
   
   1. 登录FusionInsight Manager系统，具体请参见[访问FusionInsight Manager（MRS 3.x及之后版本）](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_2124.html)。
   
   2. 选择"集群 \> *待操作集群名称* \> 服务 \> Loader"。
   
   3. 单击"LoaderServer(*节点名称* ，主)"打开"Loader WebUI"界面。
      图1Loader WebUI界面   
      ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0000001407248238.png) 
   
   
   
   
4. 创建Loader数据导出作业，单击"新建作业"，在"1.基本信息"选择所需要的作业类型，然后单击"下一步"。 
   1. "名称"输入作业的名称，"类型"选择"导出"即导出。
   
   2. "连接"选择一个连接。默认没有已创建的连接，单击"添加"创建一个新的连接，完成后单击"测试"，测试是否可用，待提示成功后单击"确定"。
      表1连接配置参数一览表 
      | 连接器类型                                                                  | 参数名        | 说明                                                                                                                                                                                                                                                                                                                                                 |
      |:---|:---|:---|
      | generic-jdbc-connector                                                 | JDBC驱动程序类  | JDBC驱动类名。                                                                                                                                                                                                                                                                                                                                          |
      | generic-jdbc-connector                                                 | JDBC连接字符串  | JDBC连接字符串。                                                                                                                                                                                                                                                                                                                                         |
      | generic-jdbc-connector                                                 | 用户名        | 连接数据库使用的用户名。                                                                                                                                                                                                                                                                                                                                       |
      | generic-jdbc-connector                                                 | 密码         | 连接数据库使用的密码。                                                                                                                                                                                                                                                                                                                                        |
      | generic-jdbc-connector                                                 | JDBC连接属性   | JDBC连接属性，单击"添加"手动添加。 - 名称：连接属性名  - 值：连接属性值   |
      | hdfs-connector                                                         | -          | -                                                                                                                                                                                                                                                                                                                                                  |
      | oracle-connector                                                       | JDBC连接字符串  | 用户连接数据库的连接字符串。                                                                                                                                                                                                                                                                                                                                     |
      | oracle-connector                                                       | 用户名        | 连接数据库使用的用户名。                                                                                                                                                                                                                                                                                                                                       |
      | oracle-connector                                                       | 密码         | 连接数据库使用的密码。                                                                                                                                                                                                                                                                                                                                        |
      | oracle-connector                                                       | 连接属性       | 连接属性，单击"添加"手动添加。 - 名称：连接属性名  - 值：连接属性值       |
      | mysql-fastpath-connector                                               | JDBC连接字符串  | JDBC连接字符串。                                                                                                                                                                                                                                                                                                                                         |
      | mysql-fastpath-connector                                               | 用户名        | 连接数据库使用的用户名。                                                                                                                                                                                                                                                                                                                                       |
      | mysql-fastpath-connector                                               | 密码         | 连接数据库使用的密码。                                                                                                                                                                                                                                                                                                                                        |
      | mysql-fastpath-connector                                               | 连接属性       | 连接属性，单击"添加"手动添加。 - 名称：连接属性名  - 值：连接属性值       |
      | sftp-connector  | Sftp服务器的IP | SFTP服务器的IP地址。                                                                                                                                                                                                                                                                                                                                      |
      | sftp-connector  | Sftp服务器端口  | SFTP服务器的端口号。                                                                                                                                                                                                                                                                                                                                       |
      | sftp-connector  | Sftp用户名    | 访问SFTP服务器的用户名。                                                                                                                                                                                                                                                                                                                                     |
      | sftp-connector  | Sftp密码     | 访问SFTP服务器的密码。                                                                                                                                                                                                                                                                                                                                      |
      | sftp-connector  | Sftp公钥     | Sftp服务器公钥。                                                                                                                                                                                                                                                                                                                                         |
      | oracle-partition-connector                                             | JDBC驱动程序类  | JDBC驱动类名。                                                                                                                                                                                                                                                                                                                                          |
      | oracle-partition-connector                                             | JDBC连接字符串  | JDBC连接字符串。                                                                                                                                                                                                                                                                                                                                         |
      | oracle-partition-connector                                             | 用户名        | 连接数据库使用的用户名。                                                                                                                                                                                                                                                                                                                                       |
      | oracle-partition-connector                                             | 密码         | 连接数据库使用的密码。                                                                                                                                                                                                                                                                                                                                        |
      | oracle-partition-connector                                             | 连接属性       | 连接属性，单击"添加"手动添加。 - 名称：连接属性名  - 值：连接属性值       |
         
      
   
   3. "组"设置"作业"所属组，默认没有已创建的组，单击"添加"创建一个新的组，单击"确定"保存。
   
   4. "队列"设置Loader的任务在指定的Yarn队列中执行。默认值"root.default"表示任务在"default"队列中执行。
   
   5. "优先级"设置Loader的任务在指定的Yarn队列中的优先级。可选值为"VERY_LOW"、"LOW"、"NORMAL"、"HIGH"和"VERY_HIGH"。默认值为"NORMAL"。
   
   
   
   
5. 在"2.输入设置"，设置数据来源，然后单击"下一步"。 
   ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
   创建或者编辑Loader作业时，在配置SFTP路径、HDFS/OBS路径、SQL的Where条件等参数时，可以使用宏定义，具体请参考[配置项中使用宏定义](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1153.html)章节。
   表2输入配置参数一览表 
   | 源文件类型    | 参数名      | 解释说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   |:---|:---|:---|
   | HDFS/OBS | 输入目录     | 从HDFS/OBS导出时的输入路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | HDFS/OBS | 路径过滤器    | 配置通配符对源文件的输入路径包含的目录进行过滤。输入路径"输入目录"不参与过滤。配置多个过滤条件时使用逗号隔开，配置为空时表示不过滤目录。不支持正则表达式过滤。                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | HDFS/OBS | 文件过滤器    | 配置通配符对源文件的输入文件名进行过滤。配置多个过滤条件时使用逗号隔开。不能配置为空。不支持正则表达式过滤。                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   | HDFS/OBS | 文件类型     | 文件导入类型： - TEXT_FILE：导入文本文件并保存为文本文件。  - SEQUENCE_FILE：导入文本文件并保存在sequence file文件格式。  - BINARY_FILE：以二进制流的方式导入文件，可以导入任何格式的文件。   |
   | HDFS/OBS | 文件分割方式   | 选择按FILE文件或SIZE大小分割源文件成多份，作为数据导出的MapReduce任务中各个map的输入文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   | HDFS/OBS | Map数     | 配置数据操作的MapReduce任务中同时启动的map数量。不可与"Map数据块大小"同时配置。参数值必须小于或等于"3000"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | HDFS/OBS | Map数据块大小 | 配置数据操作的MapReduce任务中启动map所处理的数据大小，单位为MB。参数值必须大于或等于"100"，建议配置值为"1000"。不可与"Map数"同时配置。当使用关系型数据库连接器时，不支持"Map数据块大小"，请配置"Map数"。                                                                                                                                                                                                                                                                                                                                                                                                             |
   | HBASE    | HBase实例  | 在HBase作业中，Loader支持从集群可添加的所有HBase服务实例中选择任意一个。如果选定的HBase服务实例在集群中未添加，则此作业无法正常运行。                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | HBASE    | 个数       | 配置数据操作的MapReduce任务中同时启动的map数量。参数值必须小于或等于"3000"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | HIVE     | Hive实例   | 在Hive作业中，Loader支持从集群可添加的所有Hive服务实例中选择任意一个。如果选定的Hive服务实例在集群中未添加，则此作业无法正常运行。                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | HIVE     | 个数       | 配置数据操作的MapReduce任务中同时启动的map数量。参数值必须小于或等于"3000"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   | SPARK    | Spark实例  | 仅支持SparkSQL存取Hive数据。在SparkSQL作业中，Loader支持从集群可添加的所有Spark服务实例中选择任意一个。如果选定的Spark服务实例在集群中未添加，则此作业无法正常运行。                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | SPARK    | 个数       | 配置数据操作的MapReduce任务中同时启动的map数量。参数值必须小于或等于"3000"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
      
   
   
6. 在"3.转换"设置数据传输过程中的转换操作。 
   确认Loader创建的数据操作作业中，源数据的值是否满足直接使用需求而不进行转换，例如大小写转换、截取、拼接和分隔。
   - 满足需求，请单击"下一步"。
   
   - 不满足需求，请执行[6.a]～[6.d]。
   
   
   1. 默认没有已创建的转换步骤，可拖动左侧样例到编辑框，添加一个新的转换步骤。
   
   2. 完整的转换流程包含以下类型，每个类型请根据业务需要进行选择。
      1. 输入类型，第一个转换步骤，仅添加一种，任务涉及HBase或关系型数据库必须添加。
      
      2. 转换类型，中间转换步骤，可添加一种以上或不添加。
      
      3. 输出类型，最后一个转换步骤，仅添加一种，任务涉及HBase或关系型数据库必须添加。
         表3样例一览表 
         | 类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
         |:---|:---|
         | 输入类型 | - CSV文件输入：CSV文件输入步骤，配置分隔符以转换生成多个字段。  - 固定宽度文件输入：文本文件输入步骤，配置截取字符或字节的长度以转换生成多个字段。  - 表输入：关系型数据输入步骤，配置数据库的指定列为输入的字段。  - HBase输入：HBase表输入步骤，配置HBase表的列定义到指定字段。  - HTML输入：HTML网页数据输入步骤，配置获取HTML网页文件目标数据到指定字段。  - Hive输入：Hive表输入步骤，配置Hive表的列定义到指定字段。  - Spark输入：SparkSQL表输入步骤，配置SparkSQL表的列定义到指定字段。仅支持存取Hive数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
         | 转换类型 | - 长整型时间转换：长整型日期转换步骤，配置长整型数值与日期的转换。  - 空值转换：空值转换步骤，配置指定值替换空值。  - 随机值转换：随机数据生成步骤，配置新增值为随机数据的字段。  - 增加常量字段：增加常量步骤，配置直接生成常量字段。  - 拼接转换：拼接字段步骤，配置已生成的字段通过连接符连接，转换出新的字段。  - 分隔转换：分隔字段步骤，配置已生成的字段通过分隔符分隔，转换出新的字段。  - 取模转换：取模运算步骤，配置已生成的字段通过取模，转换出新的字段。  - 剪切字符串：字符串截取步骤，配置已生成的字段通过指定位置截取，转换出新的字段。  - EL操作转换：计算器，可以对字段值进行运算，目前支持的算子有：md5sum、sha1sum、sha256sum和sha512sum等。  - 字符串大小写转换：字符串转换步骤，配置已生成的字段通过大小写变换，转换出新的字段。  - 字符串逆序转换：字符串逆序步骤，配置已生成的字段通过逆序，转换出新的字段。  - 字符串空格清除转换：字符串空格清除步骤，配置已生成的字段通过清除空格，转换出新的字段。  - 过滤行转换：过滤行步骤，配置逻辑条件过滤掉含触发条件的行。  - 更新域：更新域步骤，配置当满足某些条件时，更新指定字段的值。   |
         | 输出类型 | - 文件输出：文本文件输出步骤，配置已生成的字段通过分隔符连接并输出到文件。  - 表输出：关系型数据库输出步骤，配置输出的字段对应到数据库的指定列。  - HBase输出：HBase表输出步骤，配置已生成的字段输出到HBase表的列。  - Hive输出：Hive表输出步骤，配置已生成的字段输出到Hive表的列。  - Spark输出：SparkSQL表输出步骤，配置已生成的字段输出到SparkSQL表的列。仅支持存取Hive数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
            
         编辑栏包括以下几种任务：
         - 重命令：重命名样例。
         
         - 编辑：编辑步骤转换，参考[6.c]。
         
         - 删除：删除样例。
           ![](https://support.huaweicloud.com/cmpntguide-mrs/public_sys-resources/note_3.0-zh-cn.png)
           也可使用快捷键"Del"删除。
           
          
       
   
   3. 单击"编辑"，编辑步骤转换信息，配置字段与数据。
      步骤转换信息中的具体参数设置请参考[算子帮助](https://support.huaweicloud.com/cmpntguide-mrs/mrs_01_1119.html)。
      转换步骤配置不正确时，传输的数据将无法转换并成为脏数据，脏数据标记规则如下：
      - 任意输入类型步骤中，原数据包含字段的个数小于配置字段的个数，或者原数据字段值与配置字段的类型不匹配时，全部数据成为脏数据。
      
      - "CSV文件输入"步骤中，"验证输入字段"检验输入字段与值的类型匹配情况，检查不匹配时跳过该行，当前行成为脏数据。
      
      - "固定宽度文件输入"步骤中，"固定长度"指定字段分割长度，长度大于原字段值的长度则数据分割失败，当前行成为脏数据。
      
      - "HBase输入"步骤中，"HBase表名"指定HBase表名不正确，或者"主键"没有配置主键列，全部数据成为脏数据。
      
      - 任意转换类型步骤中，转换失败的行成为脏数据。例如"分隔转换"步骤中，生成的字段个数小于配置字段的个数，或者原数据不能转换为String类型，当前行成为脏数据。
      
      - "过滤行转换"步骤中，被筛选条件过滤的行成为脏数据。
      
      - "取模转换"步骤中，原字段值为"NULL"，当前行成为脏数据。
       
   
   4. 单击"下一步"。
   
   
   
   
7. 在"4.输出设置"，设置数据保存目标位置，然后单击"保存"保存作业或"保存并运行"，保存作业并运行作业。 
   表4输出配置参数一览表 
   | 连接类型                       | 参数名     | 解释说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   |:---|:---|:---|
   | sftp-connector             | 输出路径    | SFTP服务器中导出文件的路径或者文件名，如果连接器配置多个地址此处可对应使用分号分隔多个路径或者文件名，数量需要与连接器中服务器的数量一致。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | sftp-connector             | 文件操作方式  | 数据导入时的操作行为。全部数据从输入路径导入到目标路径时，先保存在临时目录，然后再从临时目录复制转移至目标路径，任务完成时删除临时路径的文件。转移临时文件存在同名文件时有以下行为： - "OVERRIDE"：直接覆盖旧文件。    - "RENAME"：重命名新文件。无扩展名的文件直接增加字符串后缀，有扩展名的文件在文件名增加字符串后缀。字符串具有唯一性。    - "APPEND"：在旧文件尾部合并新文件内容。合并操作只是简单的追加，不保证追加文件是否可以使用。例如文本文件可合并，压缩文件合并后可能无法使用。    - "IGNORE"：保留旧文件，不复制新文件。    - "ERROR"：转移过程中出现同名文件时任务将停止执行并报错，已转移的文件导入成功，同名的文件及未转移的文档导入失败。   |
   | sftp-connector             | 编码类型    | 导出文件的编码格式，如UTF-8。导出文本文件时才能配置。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | sftp-connector             | 压缩      | 使用SFTP协议导数据时，是否开启压缩传输功能以减小带宽使用。"true"为开启压缩，"false"为关闭压缩。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | hdfs-connector             | 输出路径    | 导出文件在HDFS/OBS的输出目录或者文件名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | hdfs-connector             | 文件格式    | 文件导出类型： - "TEXT_FILE"：导入文本文件并保存为文本文件。    - "SEQUENCE_FILE"：导入文本文件并保存在sequence file文件格式。    - "BINARY_FILE"：以二进制流的方式导入文件，可以导入任何格式的文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
   | hdfs-connector             | 压缩格式    | 在下拉菜单中选择数据导出到HDFS/OBS后保存文件的压缩格式，未配置或选择NONE表示不压缩数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | hdfs-connector             | 自定义压缩格式 | 自定义压缩格式类型的名称。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | generic-jdbc-connector     | 架构名称    | 数据库模式名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | generic-jdbc-connector     | 表名      | 数据库表名，用于最终保存传输的数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | generic-jdbc-connector     | 临时表     | 数据库临时表的表名，用于临时保存传输过程中的数据，字段需要和"表名"配置的表一致。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | oracle-partition-connector | 架构名称    | 数据库模式名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | oracle-partition-connector | 表名      | 数据库表名，用于最终保存传输的数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | oracle-partition-connector | 临时表     | 数据库临时表的表名，用于临时保存传输过程中的数据，字段需要和"表名"配置的表一致。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | oracle-connector           | 表名      | 目标表，用于存储数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | oracle-connector           | 列名      | 指定要写入的列名，没有指定的列允许被设置为空值或者默认值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | mysql-fastpath-connector   | 架构名称    | 数据库模式名。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | mysql-fastpath-connector   | 表名      | 数据库表名，用于最终保存传输的数据。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   | mysql-fastpath-connector   | 临时表名    | 临时表名称，用于预存数据，作业执行成功后，再将数据转移到正式表。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      
   
   
8. 已创建的作业可以在"Loader WebUI"界面上进行浏览，可进行启动、停止、复制、删除、编辑和查看历史信息操作。 
   图2查看Loader作业   
   ![](https://support.huaweicloud.com/cmpntguide-mrs/zh-cn_image_0264266728.png)
   
   
 
