Doris数据导入和导出

news/2024/5/20 2:31:45 标签: hadoop, hdfs, 大数据

数据导入

broker load

Broker 导入,主要用于从HDFS上把文件导入到Doris中。这是一个异步导入的方式。(任务执行成功并不代表数据全部都导入成功)

前提:启动HDFS。

案例演示:

--创建表
CREATE TABLE test_db.user_result(
id BIGINT,
name VARCHAR(50),
age INT,
gender INT,
province  VARCHAR(50),
city   VARCHAR(50),
region  VARCHAR(50),
phone VARCHAR(50),
birthday VARCHAR(50),
hobby  VARCHAR(50),
register_date VARCHAR(50)
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 10
PROPERTIES("replication_num" = "1");

--创建导入作业
LOAD LABEL test_db.user_result
(
DATA INFILE("hdfs://node1:8020/datas/doris/user.csv")
INTO TABLE `user_result`
COLUMNS TERMINATED BY ","
FORMAT AS "csv"
(id, name, age, gender, province,city,region,phone,birthday,hobby,register_date)
)
WITH BROKER broker_name
(
"dfs.nameservices" = "my_cluster",
"dfs.ha.namenodes.my_cluster" = "nn1",
"dfs.namenode.rpc-address.my_cluster.nn1" = "node1:8020",
"dfs.client.failover.proxy.provider" = "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider"
)
PROPERTIES
(
    "max_filter_ratio"="0.00002"
);


--准备数据(数据在`/预习资料/02_资料/03_data/doris目录下`)
--先把数据上传到Linux的/export/data/doris目录下,再把数据上传到HDFS之上
hadoop fs -mkdir -p /datas/doris
hadoop fs -put /export/data/doris/user.csv /datas/doris

--查看导入任务是否完成
show load\G;
如果显示State:FINISHED,表示任务完成。数据已经完全导入,可以正常查看。

steam load

主要是把文件系统或者程序中的数据流的数据导入到Doris中。这是一个异步导入的方式。

语法:

curl --location-trusted -u user:passwd [-H ""...] -T data.file -XPUT http://fe_host:http_port/api/{db}/{table}/_stream_load

案例演示:

curl --location-trusted -u root:123456 -H "column_separator:,"  -T /export/data/doris/user.csv -X PUT http://node1:8030/api/test_db/user_result/_stream_load

Routine load

是一关常驻的任务,是从指定的数据源(比如Kafka)中导入数据到Doris。这是异步导入方式。

演示案例:

#1.启动zk
zkServer.sh start


#2.启动kafka
 nohup /export/server/kafka/bin/kafka-server-start.sh /export/server/kafka/config/server.properties > /tmp/kakka.log &


#3.查看topic是否存在
bin/kafka-topics.sh  --list --zookeeper node1:2181

 
#4.创建topic,名字为test
 bin/kafka-topics.sh --create \
 --zookeeper node1:2181,node2:2181,node3:2181 \
 --replication-factor 1 \
 --partitions 1 \
 --topic test


#5.进入生产者,发送数据
 bin/kafka-console-producer.sh --broker-list node1:9092 --topic test
	{"id":1,"name":"zhangsan","age":30}
	{"id":2,"name":"lisi","age":18}


#6.创建表
create table student_kafka
(
id int,
name varchar(50),
age int
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 10
PROPERTIES("replication_num" = "1");


#7.创建routine load任务
CREATE ROUTINE LOAD test_db.kafka_job1 on student_kafka
PROPERTIES
(
    "desired_concurrent_number"="1",
"strict_mode"="false",
    "format" = "json"
)
FROM KAFKA
(
    "kafka_broker_list"= "node1:9092",
    "kafka_topic" = "test",
    "property.group.id" = "test_group_1",
    "property.kafka_default_offsets" = "OFFSET_BEGINNING",
    "property.enable.auto.commit" = "false"
);


#8.查看表数据
select * from student_kafka;

Insert into

普通的insert语句。语法如下:(和MySQL类似)

案例演示:

insert into test_db.example_site_visit values(10005,'2017-10-03','广州',35,0,'2017-10-03 10:20:22',11,6,6);

数据导出

数据导出(Export)是 Doris 提供的一种将数据导出的功能。该功能可以将用户指定的表或分区的数据,以文本的格式,通过 Broker 进程导出到远端存储上,如 HDFS/BOS 等。

案例演示:把表数据导出到HDFS

--准备目标表的数据
select * from example_site_visit;


--创建导出的任务
EXPORT TABLE test_db.example_site_visit 
TO "hdfs://node1:8020/datas/output" 
WITH BROKER "broker_name" (
"username"="root", 
"password"="123456"
);


--查看HDFS的路径,看是否有数据


http://www.niftyadmin.cn/n/233448.html

相关文章

TPM管理工作应该如何开展?

在制造行业,Total Productive Maintenance(TPM)管理被广泛认为是提高生产效率和设备可靠性的有效方式。然而,实施TPM管理需要深入的专业知识和经验。本文将探讨如何开展TPM管理工作,以确保制造企业的生产效率和设备可靠…

【前端面试题——JS篇】

目录1.javascript都有哪些数据类型,如何存储的?2.判断数据类型的方法有哪些?有什么区别?3.说说你对事件循环的理解?4.说说你对BOM的理解,BOM的核心都有哪些?作用是什么5.Bind,call,apply有什么区…

北京E4432B信号发生器

E4432B 安捷伦|Agilent E4432B ESG-D系列 3G高频数字信号源250KHz-3GHz 品  牌: Agilent简单介绍频率范围:E4430B 250K-1GHzE4431B 250K-2GHzE4432B 250K-3GHzE4433B 250K-4GHz 18320918653供单信道和多信道CDMA用的测量卡用于I和Q的20 MHz射频带宽…

React styled-components(三)—— 高级特性

styled-components 高级特性样式继承嵌套设置主题样式继承 新建 Demo.js 文件: import React, { Component } from react import styled from styled-components;const CustomStyle styled.divp { color: red;} const ContextBox styled(CustomStyle)width:…

【cmake篇】install 命令

install 命令用于指定文件的输出路径,这个文件可以是二进制执行文件、动态库文件、静态库文件,甚至是目录。通俗的来讲,install 其实就是把生成的文件统一拷贝到某个目录下,方便打包或者转移。 install 在不同场合,使…

Unity协程和线程的区别深入理解(附实验展示)

Unity协程和线程的区别附实验展示写在前面协程、进程、线程的概念进程与线程的区别协程与线程的区别实验1:协程中执行普通函数实验2:协程中开启另一个协程实验3:协程中开启WWW请求实验4:一个脚本中多个协程访问临界资源实验5&…

第三十一天 Linux介绍和基础命令

目录 1.前言 1.1 什么是Linux 1.2 为什么要学Linux 1.3 学完Linux能干什么 2.Linux简介 2.1 主流操作系统 2.2 Linux发展历史 3. Linux安装 3.1 安装方式介绍 3.2 安装VMware 3.3 安装Linux 3.4 网卡设置 3.5 安装SSH连接工具 3.6 Linux目录结构 4.Linux常用命令…

大白话讲解synchronized锁升级套路

synchronized锁是啥?锁其实就是一个对象,随便哪一个都可以,Java中所有的对象都是锁,换句话说,Java中所有对象都可以成为锁。 这次我们主要聊的是synchronized锁升级的套路 synchronized会经历四个阶段:无锁…