目前阿里云数据仓库支持两种数据导入方式:BOS 文件导入 和 本地文件导入。
-
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; 查看。
-
本地文件导入
还支持直接导入本地文件。这里的 本地,指和 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 查看。