Help Center/ MapReduce Service/ Component Operation Guide (LTS)/ Using Loader/ Creating a Loader Data Import Job/ Using Loader to Import Data from a Relational Database to HDFS or OBS
Updated on 2024-12-13 GMT+08:00

Using Loader to Import Data from a Relational Database to HDFS or OBS

Scenario

Use Loader to import data from a relational database to HDFS or OBS.

Prerequisites

  • You have obtained the service username and password for creating a Loader job.
  • You have had the permission to access the HDFS or OBS directories and data involved in job execution.
  • You have obtained the username and password of the relational database.
  • No disk space alarm is reported, and the available disk space is sufficient for importing and exporting data.
  • If a configured task requires the Yarn queue function, the user must be authorized with related Yarn queue permission.
  • The user who configures a task must obtain execution permission on the task and obtain usage permission on the related connection of the task.
  • Before the operation, perform the following steps:
    1. Obtain the JAR package of the relational database driver and save it to the following directory on the active and standby Loader nodes: ${BIGDATA_HOME}/FusionInsight_Porter_xxx/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib.
    2. Run the following command on the active and standby nodes as user root to modify the permission:

      cd ${BIGDATA_HOME}/FusionInsight_Porter_xxx/install/FusionInsight-Sqoop-1.99.3/FusionInsight-Sqoop-1.99.3/server/webapps/loader/WEB-INF/ext-lib

      chown omm:wheel JAR package name

      chmod 600 JAR package name

    3. Log in to FusionInsight Manager. Choose Cluster > Services > Loader > More > Restart Service. Enter the password of the administrator to restart the Loader service.

Procedure

Setting Basic Job Information

  1. Access the Loader web UI.

    1. Log in to FusionInsight Manager. For details, see Accessing FusionInsight Manager.
    2. Choose Cluster > Services > Loader.
    3. Click LoaderServer(Node name, Active). The Loader web UI is displayed.
      Figure 1 Loader web UI

  1. Click New Job to go to the Basic Information page and set basic job information.

    Figure 2 Basic Information
    1. Set Name to the name of the job.
    2. Set Type to Import.
    3. Set Group to the group to which the job belongs. No group is created by default. You need to click Add to create a group and click OK to save the created group.
    4. Set Queue to the Yarn queue that executes the job. The default value is root.default.
    5. Set Priority to the priority of the Yarn queue that executes the job. The default value is NORMAL. The options are VERY_LOW, LOW, NORMAL, HIGH, and VERY_HIGH.

  2. In the Connection area, click Add to create a connection, set Connector to generic-jdbc-connector or a dedicated database connector (oracle-connector, oracle-partition-connector, or mysql-fastpath-connector), set connection parameters, and click Test to verify whether the connection is available. When "Test Success" is displayed, click OK.

    • For connection to relational databases, general database connectors (generic-jdbc-connector) or dedicated database connectors (oracle-connector, oracle-partition-connector, and mysql-fastpath-connector) are available. However, compared with general database connectors, dedicated database connectors perform better in data import and export because they are optimized for specific database types.
    • When mysql-fastpath-connector is used, the mysqldump and mysqlimport commands of MySQL must be available on NodeManager nodes, and the MySQL client version to which the two commands belong must be compatible with the MySQL server version. If the two commands are unavailable or the versions are incompatible, install the MySQL client applications and tools following the instructions at http://dev.mysql.com/doc/refman/5.7/en/linux-installation-rpm.html.
    Table 1 generic-jdbc-connector connection parameters

    Parameter

    Description

    Example Value

    Name

    Name of a relational database connection

    dbName

    JDBC Driver Class

    Name of a Java database connectivity (JDBC) driver class

    oracle.jdbc.driver.OracleDriver

    JDBC Connection String

    JDBC connection string

    jdbc:oracle:thin:@//10.16.0.1:1521/oradb

    Username

    Username for connecting to the database

    omm

    Password

    Password for connecting to the database

    xxxx

    JDBC Connection Properties

    JDBC connection attribute. Click Add to manually add the attribute.

    • Name: connection attribute name
    • Value: connection attribute value
    • Name: socketTimeout
    • Value: 20

    Setting Data Source Information

  3. Click Next. On the displayed From page, set the data source information.

    Table 2 Parameter description

    Parameter

    Description

    Example Value

    Schema Name

    Database schema name. This parameter exists in the Table name schema.

    public

    Table Name

    Database table name. This parameter exists in the Table name schema.

    test

    SQL Statement

    SQL statement for Loader to query data to be imported in Table SQL statement mode. The SQL statement requires the query condition WHERE ${CONDITIONS}. Without this condition, the SQL statement cannot be run properly. An example SQL statement is as follows: select * from TABLE WHERE A>B and ${CONDITIONS}. If Table column names is set, the column specified by Table column names will replace the column queried in the SQL statement. This parameter cannot be set when Schema name or Table name is set.

    NOTE:

    You can use macros to define SQL Where statements. For details, see Using Macro Definitions in Configuration Items.

    select * from TABLE WHERE A>B and ${CONDITIONS}

    Table Column Names

    Table columns whose content is to be imported by Loader. Use commas (,) to separate multiple fields.

    If the parameter is not set, all the columns are imported and the Select * order is used as the column location.

    id,name

    Partition Column Name

    Database table column based on which to-be-imported data is determined. This parameter is used for partitioning in a Map job. You are advised to configure the primary key field.

    NOTE:
    • A partition column must have an index. If no index exists, do not specify a partition column. If a partition column without an index is specified, the database server disk I/O will be busy, the access of other services to the database will be affected, and the import will take a long period.
    • In multiple fields with indexes, select the field that has the most discrete value as the partition column. A partition column that is not discrete may result in load imbalance when multiple MapReduce jobs are imported.
    • The sorting rules of partition columns must be case-sensitive. Otherwise, data may be lost during data import.
    • You are not advised to select fields of the float or double type for the partition column. Otherwise, the records containing the minimum and maximum values of the partition column may fail to be imported due to precision issues.

    id

    Nulls in Partition Column

    Indicates whether to process records whose values are null in database table columns.

    • true: Records whose values are null are processed.
    • false: Records whose values are not null are processed.

    true

    Whether to Specify a Partition Column

    Indicates whether to specify a partition column.

    true

    Setting Data Transformation

  4. Click Next. On the displayed Transform page, set the transformation operations in the data transformation process. For details about how to select operators and set parameters, see Loader Operator Help and Table 3.

    Table 3 Input and output parameters of the operator

    Input Type

    Output Type

    Table input

    File output

    Figure 3 Operator operation procedure

    Setting Data Storage Information and Executing the Job

  5. Click Next. On the displayed To page, set Storage type to HDFS.

    Table 4 Parameter description

    Parameter

    Description

    Example Value

    File Type

    Type of a file after the file is imported. The options are as follows:

    • TEXT_FILE: imports a text file and stores it as a text file.
    • SEQUENCE_FILE: imports a text file and stores it as a sequence file.
    • BINARY_FILE: imports files of any format by using binary streams.

    TEXT_FILE

    Compression Format

    Compression format of files imported to HDFS or OBS. Select a format from the drop-down list. If you select NONE or leave this parameter blank, data is not compressed.

    NONE

    Output Directory

    Directory for storing data imported into HDFS or OBS.

    NOTE:

    You can use macros to define path parameters. For details, see Using Macro Definitions in Configuration Items.

    /user/test

    Delete Files Before Execution

    (This parameter is available for MRS 3.5.0 or later.)

    Whether to delete the files generated based on the file name identifier before the job is executed so that data can be reloaded.

    • false (default): The files are not deleted before the job is executed.
    • true: Specified files are deleted before the job is executed. If the Operation is set to OVERRIDE, the files overwrite the old files. Only the following connectors are supported:
      • generic-jdbc-connector
      • oracle-connector
      • mysql-fastpath-connector

    false

    File Name Identifier

    (This parameter is available for MRS 3.5.0 or later.)

    File name identifier, which is used to generate the name of the loaded file.

    • File name format: import_part_xxx_000000000
      • xxx: file name
      • Value range: [0-9], [a-z], [A-Z], hyphen (-), underscore (_), and dot (.)
      • Value length: [1-255]
    • This parameter is mandatory when Delete Files Before Execution is true.

    12

    Operation

    Action during data import. When all data is to be imported from the input path to the destination path, the data is stored in a temporary directory and then copied from the temporary directory to the destination path. After the data is imported successfully, the data is deleted from the temporary directory. One of the following actions can be taken when duplicate file names exist during data transfer:

    • OVERRIDE: overrides the old file.
    • RENAME: renames as new file. For a file without an extension, a string is added to the file name as the extension; for a file with an extension, a string is added to the extension. The string is unique.
    • APPEND: adds the content of the new file to the end of the old file. This action only adds content regardless of whether the file can be used. For example, a text file can be used after this operation, while a compressed file cannot.
    • IGNORE: reserves the old file and does not copy the new file.
    • ERROR: stops the task and reports an error if duplicate file names exist. Transferred files are imported successfully, while files that have duplicate names and files that are not transferred fail to be imported.

    OVERRIDE

    Extractors

    Number of Maps that are started at the same time in a MapReduce task of a data configuration operation. This parameter cannot be set when Extractor Size is set. The value must be less than or equal to 3000.

    -

    Extractor Size

    Size of data processed by Maps that are started in a MapReduce task of a data configuration operation. The unit is MB. The value must be greater than or equal to 100. The recommended value is 1000. This parameter cannot be set when Extractors is set. When a relational database connector is used, Extractor Size is unavailable. You need to set Extractors.

    1000

  6. Click Save and run to save and run the job.

    Checking the Job Execution Result

  7. Go to the Loader web UI. When Status is Succeeded, the job is complete.

    Figure 4 Viewing job details