资讯专栏INFORMATION COLUMN

本地数据导入 数据仓库 UDW Doris

ernest.wang / 1612人阅读

摘要:本地数据导入本地数据导入本地数据导入本篇目录注意事项注意事项操作步骤操作步骤注意事项注意事项注意事项用于将本地文件导入到中。建议一个导入请求的数据量控制在以内。

本地数据导入

本篇目录

注意事项操作步骤

注意事项

Stream Load 用于将本地文件导入到 Doris 中。建议一个导入请求的数据量控制在 1 - 2 GB 以内。如果有大量本地文件,可以分批并发提交

操作步骤

准备测试数据

创建csv文件lineorder.csv放到之前创建的云主机数据盘/data目录下

1|2|28720|133109|1289|19960502|3-MEDIUM|0|44|5025240|11485668|8|4623220|68526|0|19960722|RAIL
2|3|28720|152761|373|19960502|3-MEDIUM|0|3|544128|11485668|4|522362|108825|1|19960602|MAIL
3|1|6415|176345|1060|19970713|4-NOT SPECI|0|50|7106700|6890656|4|6822432|85280|1|19970907|FOB
4|1|11090|25360|43|19930728|3-MEDIUM|0|24|3084864|9275090|2|3023166|77121|3|19931007|MAIL
5|2|11090|10463|1321|19930728|3-MEDIUM|0|46|6317916|9275090|8|5812482|82407|6|19930921|RAIL
6|1|22681|7272|1235|19930725|1-URGENT|0|32|3773664|6321665|7|3509507|70756|1|19930930|REG AIR
7|2|22681|6452|1387|19930725|1-URGENT|0|7|950915|6321665|4|912878|81507|0|19930923|SHIP
8|3|22681|37131|1202|19930725|1-URGENT|0|18|1922634|6321665|4|1845728|64087|1|19930828|FOB
9|1|22013|32255|305|19960831|2-HIGH|0|5|593625|3762529|4|569880|71235|3|19961119|MAIL
10|2|22013|96127|478|19960831|2-HIGH|0|28|3144736|3762529|1|3113288|67387|2|19961001|AIR
创建数据库及数据表

通过mysql-client连接集群

mysql -uroot -h<任一frontend节点IP地址> -P9030 -p<创建集群时设置的密码>
建库建表
CREATE DATABASE IF NOT EXISTS ssb;
CREATE TABLE `lineorder` (
  `lo_orderkey` bigint(20) NOT NULL COMMENT "",
  `lo_linenumber` bigint(20) NOT NULL COMMENT "",
  `lo_custkey` int(11) NOT NULL COMMENT "",
  `lo_partkey` int(11) NOT NULL COMMENT "",
  `lo_suppkey` int(11) NOT NULL COMMENT "",
  `lo_orderdate` int(11) NOT NULL COMMENT "",
  `lo_orderpriority` varchar(16) NOT NULL COMMENT "",
  `lo_shippriority` int(11) NOT NULL COMMENT "",
  `lo_quantity` bigint(20) NOT NULL COMMENT "",
  `lo_extendedprice` bigint(20) NOT NULL COMMENT "",
  `lo_ordtotalprice` bigint(20) NOT NULL COMMENT "",
  `lo_discount` bigint(20) NOT NULL COMMENT "",
  `lo_revenue` bigint(20) NOT NULL COMMENT "",
  `lo_supplycost` bigint(20) NOT NULL COMMENT "",
  `lo_tax` bigint(20) NOT NULL COMMENT "",
  `lo_commitdate` bigint(20) NOT NULL COMMENT "",
  `lo_shipmode` varchar(11) NOT NULL COMMENT ""
)
PARTITION BY RANGE(`lo_orderdate`)
(PARTITION p1992 VALUES [("-2147483648"), ("19930101")),
PARTITION p1993 VALUES [("19930101"), ("19940101")),
PARTITION p1994 VALUES [("19940101"), ("19950101")),
PARTITION p1995 VALUES [("19950101"), ("19960101")),
PARTITION p1996 VALUES [("19960101"), ("19970101")),
PARTITION p1997 VALUES [("19970101"), ("19980101")),
PARTITION p1998 VALUES [("19980101"), ("19990101")))
DISTRIBUTED BY HASH(`lo_orderkey`) BUCKETS 10
PROPERTIES (
"replication_num" = "3"
);
使用以下命令在之前创建的云主机导入本地数据
curl --location-trusted -u root:<创建集群时设置的密码> -H "column_separator:|" -T /data/lineorder.csv http://<任一Frontend节点IP地址>:8030/api/ssb/lineorder/_stream_load
Java 代码示例(这里通过一个简单的 JAVA 示例来执行 Stream Load)
package demo.doris;
import org.apache.commons.codec.binary.Base64;
import org.apache.http.HttpHeaders;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.FileEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultRedirectStrategy;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
/*
这是一个 Doris Stream Load 示例,需要依赖

    org.apache.httpcomponents
    httpclient
    4.5.13

 */
public class DorisStreamLoader {
    //可以选择填写 frontend 地址以及 frontend 的 http_port,但须保证客户端和 BE 节点的连通性。
    private final static String HOST = "your_host";//集群详情给出的连接地址,也就是Frontend的master角色对应的ip
    private final static int PORT = 8030;
    private final static String DATABASE = "ssb";   // 要导入的数据库
    private final static String TABLE = "lineorder";     // 要导入的表
    private final static String USER = "root";   
    private final static String PASSWD = "";        // 创建集群时的密码
    private final static String LOAD_FILE_NAME = "/path/to/1.txt"; // 要导入的本地文件路径
    private final static String loadUrl = String.format("http://%s:%s/api/%s/%s/_stream_load",
            HOST, PORT, DATABASE, TABLE);
    private final static HttpClientBuilder httpClientBuilder = HttpClients
            .custom()
            .setRedirectStrategy(new DefaultRedirectStrategy() {
                @Override
                protected boolean isRedirectable(String method) {
                    // 如果连接目标是 frontend,则需要处理 307 redirect。
                    return true;
                }
            });
    public void load(File file) throws Exception {
        try (CloseableHttpClient client = httpClientBuilder.build()) {
            HttpPut put = new HttpPut(loadUrl);
            put.setHeader(HttpHeaders.EXPECT, "100-continue");
            put.setHeader(HttpHeaders.AUTHORIZATION, basicAuthHeader(USER, PASSWD));
            // 可以在 Header 中设置 stream load 相关属性,这里我们设置 label 和 column_separator。
            put.setHeader("label","label1");
            put.setHeader("column_separator",",");
            // 设置导入文件。
            // 这里也可以使用 StringEntity 来传输任意数据。
            FileEntity entity = new FileEntity(file);
            put.setEntity(entity);
            try (CloseableHttpResponse response = client.execute(put)) {
                String loadResult = "";
                if (response.getEntity() != null) {
                    loadResult = EntityUtils.toString(response.getEntity());
                }
                final int statusCode = response.getStatusLine().getStatusCode();
                if (statusCode != 200) {
                    throw new IOException(
                            String.format("Stream load failed. status: %s load result: %s", statusCode, loadResult));
                }
                System.out.println("Get load result: " + loadResult);
            }
        }
    }
    private String basicAuthHeader(String username, String password) {
        final String tobeEncode = username + ":" + password;
        byte[] encoded = Base64.encodeBase64(tobeEncode.getBytes(StandardCharsets.UTF_8));
        return "Basic " + new String(encoded);
    }
    public static void main(String[] args) throws Exception{
        DorisStreamLoader loader = new DorisStreamLoader();
        File file = new File(LOAD_FILE_NAME);
        loader.load(file);
    }
}
使用mysql-client非交互模式查询验证
mysql -uroot -h<任一Frontend节点IP地址> -P9030 -p<创建集群时设置的密码> -e "select * from ssb.lineorder";

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/127003.html

相关文章

  • 概览 数据仓库 UDW Doris

    摘要:概览概览概览产品动态产品介绍什么是云数据仓库产品优势应用场景基本概念使用限制快速上手操作指南管理集群配置升降级节点扩容重启实例重置管理员密码删除集群连接集群数据导入本地数据导入数据导入通过导入开发指南数据类型语法创建库创建表创建视图插入数 概览概览产品动态产品介绍什么是云数据仓库UDoris产品优势应用场景基本概念使用限制快速上手操作指南管理集群Backend配置升降级Frontend节点扩...

    ernest.wang 评论0 收藏1705
  • 重启集群 数据仓库 UDW Doris

    摘要:重启集群重启集群重启集群当您需要重启集群时,登录账号进入到用户控制台,在全部产品下搜索或者数据仓库下选择数据仓库,进入到数据仓库控制台下,选择操作重启注意重启集群为高危操作,集群将处于重启中持续数秒,建议无必要时不要随意重启实例,这将会 重启集群当您需要重启集群时,登录UCloud账号进入到用户控制台,在全部产品下搜索或者数据仓库下选择数据仓库 UDW Doris,进入到数据仓库UDoris...

    ernest.wang 评论0 收藏2903
  • 产品购买与使用 数据仓库 UDW Doris

    摘要:如何连接云数据仓库如何连接云数据仓库如何连接云数据仓库为保证安全,云数据仓库仅提供内网网络,您连接集群时可以配合同一地域的云主机或者网络产品使用。 产品购买与使用本篇目录为什么只提供一种云盘类型?配置升降级对集群有什么影响?配置升级有什么建议?如何连接云数据仓库UDoris?为什么只提供一种云盘类型?Doris的存储特性对磁盘吞吐量要求很高,为保证Doris的性能优势, 因此仅提供RSSD云...

    ernest.wang 评论0 收藏1167
  • 聚合函数 数据仓库 UDW Doris

    摘要:聚合函数函数名称描述语法统计行数或者非值个数求最小值求最大值统计行数或者非值个数去重计算输入的并集,返回新的计算输入的并集,返回其基数计算和类型的列中不同值的个数,返回值和相同非精确快速去重列的类型不能是或者且表为模型聚合函数函数名称描述语法 sum统计行数或者非NULL值个数sum(expr)min求最小值min(column)max求最大值max(column)count统计行数或...

    ernest.wang 评论0 收藏146
  • 建表(Create Table) 数据仓库 UDW Doris

    摘要:数据排序使用的列数,取最前面几列,不能超过总的列数。示例创建一个动态分区表。创建外部表创建外部表在创建外部表的目的是可以通过访问外部数据库。创建表时,关于和的数量和数据量的建议。 建表(Create Table)创建表语法:CREATE TABLE [IF NOT EXISTS] [database.]table ( column_definition_list, [inde...

    ernest.wang 评论0 收藏1190
  • 概览 数据仓库 UDW Clickhouse

    摘要:概览概览概览产品动态产品介绍什么是云数据仓库产品优势应用场景基本概念使用限制快速上手操作指南管理集群配置升降级重启实例重置管理员密码删除集群连接集群数据同步本地数据导入数据导入数据导入间数据导入开发指南数据类型语法创建库创建表创建视图插入 概览概览产品动态产品介绍什么是云数据仓库 UClickHouse产品优势应用场景基本概念使用限制快速上手操作指南管理集群配置升降级重启实例重置管理员密码删...

    ernest.wang 评论0 收藏1076

发表评论

0条评论

ernest.wang

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<