阿里云数据仓库导入数据的方法

目前阿里云数据仓库支持两种数据导入方式:BOS 文件导入 和 本地文件导入。

  1. BOS 文件导入

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

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

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

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

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

    10000,Smith,Hello !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_accesskey 和 bos_secret_accesskey 为用于访问 BOS 的 AK 和 SK,通常在公有云页面右上角的 安全认证 中查看。

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

  2. 本地文件导入

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

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

    您可以在集群页面看到 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 查看。