上云无忧 > 文档中心 > 百度数据仓库 Palo 导入BOS中的数据
百度数据仓库 Palo Doris版
百度数据仓库 Palo 导入BOS中的数据

文档简介:
本文档主要介绍如何导入 BOS 中存储的数据。 准备工作: 请先通过以下步骤,在百度对象存储(Baidu Object Storage,BOS)上存放需导入到PALO中的数据。 开通 BOS 服务: 请参阅 开始使用BOS。 创建 Bucket: 请参阅 创建Bucket。 注意:Bucket 所属地域必须和 PALO 集群所属地域相同。PALO 地域通常可以在 PALO 控制台页面左上角查看。
*此产品及展示信息均由百度智能云官方提供。免费试用 咨询热线:400-826-7010,为您提供专业的售前咨询,让您快速了解云产品,助您轻松上云! 微信咨询
  免费试用、价格特惠

本文档主要介绍如何导入 BOS 中存储的数据。

准备工作

请先通过以下步骤,在百度对象存储(Baidu Object Storage,BOS)上存放需导入到PALO中的数据。

  1. 开通 BOS 服务

    请参阅 开始使用BOS

  2. 创建 Bucket

    请参阅 创建Bucket

    注意:Bucket 所属地域必须和 PALO 集群所属地域相同。PALO 地域通常可以在 PALO 控制台页面左上角查看

  3. 上传文件到 Bucket

    有两种方式可以上传文件到 Bucket。

    通过控制台直接上传,请参阅文档 上传Object。

    通过命令行工具上传:

    1. 请先 下载 BOS CLI 命令行工具。这里以Linux操作系统的 bce-cli-0.10.10.zip 为例。
    2. 解压后,执行以下命令配置 BOS CLI:

      ./bce -c
      BOS Access Key ID []: 353b8dexxxxxxxxxxb156d3
      BOS Secret Access Key []: ea15a18xxxxxx29f78e8d77
      BCE Security Token [None]:
      Default region name [bj]:
      Default domain [bj.bcebos.com]:
      Default use auto switch domain [yes]:
      Default breakpoint_file_expiration [7] days:
      Default use https protocol [no]:
      Default multi upload thread num [10]
      • BOS Access Key ID 和 BOS Secret Access Key 可在公有云页面右上角点击 账户头像 -> 安全认证 获取。
      • Default region name 和 Default domain 请填写Bucket所在地域的缩写,可查阅 访问域名 获取。
      • 其他配置使用默认即可。
    3. 使用以下命令上传文件:

      ./bce bos cp /path/to/local/your_file.txt bos:/your_bucket_name

开始导入

PALO 支持通过以下两种方式导入 BOS 中的数据。

通过 Broker Load 命令提交导入作业

Broker 是一个无状态的进程服务,已经内置在 PALO 集群中,主要用于对外部数据源的文件进行读写操作。Broker Load 则是利用 Broker 服务访问源数据,进行数据导入的一种方式。

  1. 创建一张表

    通过 CREATE TABLE 命令创建一张表用于存储待导入的数据。具体的导入方式请查阅 CREATE TABLE 命令手册。示例如下:

    CREATE TABLE IF NOT EXISTS load_test ( id INT, name VARCHAR(128) ) DISTRIBUTED BY HASH(id) BUCKETS 8;
  2. 提交 Broker Load 导入作业

    Broker Load 命令详细语法请参阅 Broker Load 命令手册。示例如下

    LOAD LABEL example_db.exmpale_label_1 ( DATA INFILE("bos://your_bucket_name/your_file.txt") 
    • LABEL:每个导入作业都需要指定一个唯一的 Label,后续可以通过这个 Label 查看导入作业的运行状态。
    • WITH BROKER "bos":"bos" 仅仅是 Broker 服务进程的名称,并不代表需要访问的数据源。Broker的名称可以使用 admin 用户连接 PALO 后,通过 SHOW BROKER 命令查看。
    • "bos_accesskey" 和 "bos_secret_accesskey" 可在公有云页面右上角点击 账户头像 -> 安全认证 获取。
    • "bos_endpoint" 和 BOS Bucket 所在地域有关,可查阅 访问域名 获取。
  3. INTO TABLE load_test COLUMNS TERMINATED BY "," ) WITH BROKER "bos" ( "bos_endpoint" = "http://bj.bcebos.com", 
  4. "bos_accesskey" = "353b8dexxxxxxxxxxb156d3", "bos_secret_accesskey" = "ea15a18xxxxxx29f78e8d77" ) PROPERTIES
  5.  ( "timeout" = "3600" );
  6. 查看导入作业状态

    Broker Load 是一个异步命令,第二步中的命令执行成功,仅代表作业提交成功。具体执行情况,须通过以下命令查看。

    mysql> SHOW LOAD FROM example_db WHERE LABEL="exmpale_label_1" *************************** 1. row 

    其中 State 字段状态为 FINISHED 则代表导入成功,数据可查询。关于 SHOW LOAD 返回结果的具体说明,可参阅 SHOW LOAD 命令文档。

  7. *************************** JobId: 10041 Label: exmpale_label_1
             State: FINISHED
          Progress: ETL:100%; LOAD:100% Type: BROKER
           EtlInfo: unselected.rows=0; dpp.abnorm.ALL=0; dpp.norm.ALL=100000000 TaskInfo: cluster:N/A; timeout(s)
  8. :14400; max_filter_ratio:0.0 ErrorMsg: NULL CreateTime: 2020-11-17 09:38:04 EtlStartTime: 2020-11-17 09:38:09
  9.  EtlFinishTime: 2020-11-17 09:38:09 LoadStartTime: 2020-11-17 09:38:09 LoadFinishTime: 2020-11-17 09:42:07 URL: N/A
        JobDetails: {"Unfinished backends":{},"ScannedRows":0,"TaskNumber":0,"All backends":{},"FileNumber":0,
  10. "FileSize":0} 1 row in set (0.01 sec)
  11. 取消导入作业

    正在运行中的 Broker Load 导入作业可以使用以下命令取消:

    CANCEL LOAD WHERE LABEL="exmpale_label_1";

    取消成功后,所有已导入的数据也会被回滚。PALO 会自动保证一个导入作业中的数据原子生效。

注:关于 Broker Load 命令的更多高级功能能详细介绍,请参阅 BROKER LOAD 命令文档。

通过外部表进行导入

PALO 也支持通过创建一张 Broker 外部表的方式引用BOS上存储的数据,然后通过 INSERT INTO SELECT 的方式导入数据。

  1. 创建一张表

    创建一张用于存储数据的表。同上,不再赘述。

  2. 创建 Broker 外部表

    创建外部表命令的具体说明可参阅 CREATE EXTERNAL TABLE 命令手册。示例如下:

    CREATE EXTERNAL TABLE IF NOT EXISTS example_db.example_ext_table ( id INT, name VARCHAR(128) ) ENGINE=BROKER
    PROPERTIES ( "broker_name" = "bos", "path" = "bos://your_bucket_name/your_file.txt", ) BROKER PROPERTIES 
    • ENGINE:ENGINE 的类型为 BROKER,表示这是一张借助 Broker 服务访问数据的外部表。
    • "broker_name" 为 "bos","bos" 仅仅是 Broker 服务进程的名称,并不代表需要访问的数据源。Broker的名称可以使用 admin 用户连接 PALO 后,通过 SHOW BROKER 命令查看。
    • "bos_accesskey" 和 "bos_secret_accesskey" 可在公有云页面右上角点击 账户头像 -> 安全认证 获取。
    • "bos_endpoint" 和 BOS Bucket 所在地域有关,可查阅 访问域名 获取。
  3. ( "bos_endpoint" = "http://bj.bcebos.com", "bos_accesskey" = "353b8dexxxxxxxxxxb156d3", "bos_secret_accesskey"
  4.  = "ea15a18xxxxxx29f78e8d77" );

注:外部表中的数据也可以通过 SELECT 直接查询,但效率较低,推荐导入到 PALO 中后在执行查询。

  1. 导入数据

    使用以下命令从外部表导入数据到内部表。

    INSERT INTO load_test SELECT * FROM example_ext_table;

    该命令为同步命令(异步提交 INSERT 作业的操作正在开发中),命令返回成功即表示数据导入完成。当导入数据量较大时,可能会因查询超时而任务取消。关于查询超时的设置,请参阅 变量 文档中的 query_timeout 变量。

注:关于INSERT命令的更多高级功能能详细介绍,请参阅 INSERT 命令文档。

相似文档
  • 用户可以通过提交例行导入作业,直接订阅Kafka中的消息数据,以近实时的方式进行数据同步。 PALO 自身能够保证不丢不重的订阅 Kafka 中的消息,即 Exactly-Once 消费语义。
  • 用户可以通过 JDBC 协议,使用 INSERT 语句进行数据导入。 INSERT 语句的使用方式和 MySQL 等数据库中 INSERT 语句的使用方式类似。 INSERT 语句支持以下两种语法: * INSERT INTO table SELECT ... * INSERT INTO table VALUES(...)
  • PALO 可以创建通过 ODBC 协议访问的外部表。创建完成后,可以通过 SELECT 语句直接查询外部表的数据,也可以通过 INSERT INTO SELECT 的方式导入外部表的数据。
  • PALO 支持导入 JSON 格式的数据。本文档主要说明在进行JSON格式数据导入时的注意事项。 支持的导入方式: 目前只有以下导入方式支持 Json 格式的数据导入: 将本地 JSON 格式的文件通过 STREAM LOAD 方式导入。 通过 ROUNTINE LOAD 订阅并消费 Kafka 中的 JSON 格式消息。 暂不支持其他方式的 JSON 格式数据导入。
  • 导入原子性: PALO 中的所有导入操作都有原子性保证,即一个导入作业中的数据要么全部成功,要么全部失败。不会出现仅部分数据导入成功的情况。 在 BROKER LOAD 中我们也可以实现多多表的原子性导入。
官方微信
联系客服
400-826-7010
7x24小时客服热线
分享
  • QQ好友
  • QQ空间
  • 微信
  • 微博
返回顶部