九,Hive篇,从hive表里面导出数据的方法

  • 学习:知识的初次邂逅
  • 复习:知识的温故知新

目录

一,导出数据的需求

二,导出数据的详细步骤和代码

一,准备工作,创建表

二,逐个导出

三,多重导出


一,导出数据的需求

  1. 数据备份:导出数据到外部系统或存储介质,以确保数据的可靠性和安全性。在数据丢失或损坏的情况下,可以从备份中恢复数据。

  2. 数据迁移:当需要将数据从一个Hive集群迁移到另一个Hive集群,或者迁移到其他类型的数据存储系统(如关系数据库、NoSQL数据库等)时,需要导出数据。

  3. 数据分析与报告:有时候,分析师或报告工具需要直接从Hive表中提取数据,以便进行进一步的分析或生成报告。虽然Hive支持复杂的查询,但某些工具可能更适合处理本地或特定格式的数据文件。

  4. 数据共享:在多个团队或组织之间共享数据时,需要将数据导出为易于传输和访问的格式。

  5. 性能优化:在某些情况下,将Hive中的数据导出到更高效的存储格式或系统中,可以提高查询性能。例如,将Hive表中的数据导出到Parquet或ORC格式的文件中,然后在需要时将这些文件重新加载到Hive中,以利用这些格式的优化查询能力。

二,导出数据的详细步骤和代码


一,准备工作

创建普通表

-- 创建分区表
create table if not exists tb_orders_part(
    order_id INT COMMENT '订单ID',
    customer_id INT COMMENT '客户ID',
    product STRING COMMENT '产品名称',
    quantity INT COMMENT '数量',
    price DECIMAL(10,2) COMMENT '单价'
)
partitioned by (dt string)  --指定分区 以这个列分组 列的类型是字符串
row format delimited fields terminated by ','  --指定以逗号 分割文本
stored as textfile ;   --指定以目录存储

创建分区表 

-- 第二种方式 动态加载
create table tb_orders_part_2(
    order_id INT COMMENT '订单ID',
    customer_id INT COMMENT '客户ID',
    product STRING COMMENT '产品名称',
    quantity INT COMMENT '数量',
    price DECIMAL(10,2) COMMENT '单价'
)
partitioned by (dt string)  --指定分区的字段
row format delimited fields terminated by ','  -- 指定分隔符
stored as textfile ;  --指定以目录存储

    -- 动态数据之前 需要关闭严格模式
    set hive.exec.dynamic.partition.mode=nonstrict;
--  动态插入数据
insert into tb_orders_part_2 partition(dt)
select
order_id, customer_id, product, quantity, price,
dt
from tb_orders;


二,逐个导出

1,把分区表的数据导出到linux里面

-- 导出数据到Linux里面
insert overwrite local directory '/root/data/'
select * from tb_insert_into_par2;

2,导出到hdfs里面

-- 导出数据到HDFS里面
-- 假设我们导出的是 tb_insert_into_par
insert overwrite directory '/data/'
select * from tb_insert_into_par
where dt='2024-07-01';


三,多重导出

前提是多个文件的表来自同一个目录  我们准备的数据就是一个分区表

--把数据导出到linux中 多重导出
from tb_insert_into_par2
insert overwrite local directory '/root/data/dt20240701'
select * where dt='2024-07-01'
insert overwrite local directory '/root/data/dt20240702'
select * where dt='2024-07-02'
insert overwrite local directory '/root/data/dt20240703'
select * where dt='2024-07-03'


三,思维导图

  • 学习:知识的初次邂逅
  • 复习:知识的温故知新

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值