导入数据

目前 Palo 支持两种数据导入方式:BOS 文件导入 和 本地文件导入。

  1. BOS 文件导入

    BOS 是百度对象存储的简称。关于如何开通和使用BOS,可以参考 这里

    Palo 通过名为 broker 的进程读取 BOS 上的数据并导入到 Palo 存储引擎中。

    我们假设您在 BOS 上已经存放了一个数据文件:

    bos://yourt_buckets/path/to/file.txt

    其内容为以逗号分隔的两行数据:

    10000,Smith,Hello Palo!
    10001,Jack,Let's loading.
    

    其对应的表结构为上一节中创建的表 testTable

    则您可以通过以下导入命令进行数据导入:

    LOAD LABEL testDb.first_label (
        DATA INFILE("bos://your_buckets/path/to/file.txt") 
        INTO TABLE testTable
        COLUMNS TERMINATED BY ","
    )
    WITH BROKER bos (
        "bos_endpoint" = "http://bj.bcebos.com",
        "bos_accesskey" = "xxxxxxxxxxxxxxxxxxxx",
        "bos_secret_accesskey"="xxxxxxxxxxxxxxxxxxxx"
    );
    

    其中 first_label 为本次导入作业的 label,它由用户指定,每次导入必须指定一个新的 label,用来区分导入的批次。bos 为 Broker 的名称(默认),您可以通过 show broker; 语句查看到该名称。后面的参数为访问 bos 所必须提供的参数。

    导入是一个异步命令。以上导入命令执行成功,仅代表导入任务提交成功,具体任务的执行情况,您可以通过 show load; 命令查看。当结果中,State 的状态为 FINIHSED,则表示导入成功,数据可见。

    不支持访问非 PALO 所在地区的 BOS。如北京地区的 PALO 集群无法访问保定地区的 BOS。

    bos_endpoint 指定了 BOS 的 endpoint。如北京的 BOS,则缩写为 bj,保定的缩写为 bd。

    bos_accesskeybos_secret_accesskey 为用于访问 BOS 的 AK 和 SK,通常在公有云页面右上角的 安全认证 中查看。

    更多 broker 导入帮助,可以通过 help broker load; 以及 help show load; 查看。

  2. 本地文件导入

    Palo 还支持直接导入本地文件。这里的 本地,指和 PALO 在同一 VPC 内的服务器。

    本地文件导入是 Palo 唯一需要使用 HTTP 协议端口对 Palo 进行操作的功能。

    您可以在集群页面看到 Leader Node HTTP 协议连接目标Compute Node HTTP 协议连接目标 两个端口。

    理论上,您可以使用任意一个 HTTP 连接目标进行本地文件导入。但是我们建议您直接使用 Compute Node HTTP 协议连接目标,以减少一次 redirect。并且避免可能的客户端和 Compute Node 不通的的问题。

    您可以通过 curl 工具,导入本地文件

    curl --location-trusted -u user:password -T data.txt http://host:port/api/testDb/testTbl/_load?label=second_label&column_separator=%2c

    其中 data.txt 为您要导入的本地文件。testDb 和 testTbl 是需要导入的目标库表。label 则为本次导入的 label,column_separator 指定了列分隔符为 “逗号”(url 编码为 %2c)

    如果提交成功,则会返回

    {
        "status": "Success",
        "msg": "OK"
    }
    

    同样,您可以通过 http 命令,查看导入任务的状态:

    curl --location-trusted -u user:password http://192.168.16.17:8030/api/testDb/_load_info?label=second_label

    更多该导入方式的帮助,可以通 help mini load 查看。