Hive 实战(1)--hive数据导入/导出基础
前沿:
Hive也采用类SQL的语法, 但其作为数据仓库, 与面向OLTP的传统关系型数据库(Mysql/Oracle)有着天然的差别. 它用于离线的数据计算分析, 而不追求高并发/低延时的应用场景. 最显著的特别是, Hive的数据是Schema On Read, 对数据的写入非常的自由和松散, 而对数据的读取则作了各种限制. 而RMDBS则是Schema On Write, 对数据写入限制非常的严苛.
*). 数据导入/导出
让我们体验以下Hive中数据如何导入:
1). 创建数据库 db_hive_test;
CREATE DATABASE db_hive_test;
则在HDFS的目录/user/hive/warehouse下
[<username>@<hostname> ~]# sudo -u hdfs hdfs dfs -ls /user/hive/warehouse
drwxrwxrwt - root hive 0 2014-07-02 10:49 /user/hive/warehouse/db_hive_test.db
2). 创建数据表 tb_user
1 2 3 4 5 6 7 8 | CREATE TABLE tb_user ( user_id int , username string, age int , phone string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; |
3). 数据准备
在本地编辑data.txt, 内容如下所示:
1 2 3 4 5 | [<username>@<hostname> ~]# cat data.txt 1001 lilei 17 13800001111 1002 hanmm 16 13800001112 1003 lily 16 13800001113 1004 lucy 16 13800001114 |
4). 导入数据入hive
LOAD DATA LOCAL INPATH '/path/to/data.txt' INTO TABLE db_hive_test.tb_user;
5). 数据验证
select * from tb_user;
是不是很简单? 但为何不使用Insert Into单行插入数据, 实际上hive的定位, 其并不支持单行的数据插入(insert)和修改(update).
数据的导入可以借助
#) LOAD DATA语法
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
#) INSERT SELECT语法
INSERT OVERWRITE/INTO TABLE <table_name> [PARTITION(partcol1=val1, partclo2=val2 ...)] SELECT_STATEMENT
注: OVERWRITE重写,INTO追加。
6). 创建数据表tb_newuser;
1 2 3 4 5 6 7 8 | CREATE TABLE tb_newuser ( user_id int , username string, age int , phone string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE; |
7). INSERT SELECT
INSERT INTO TABLE tb_newuser SELECT * FROM tb_user;
8). 数据验证
SELECT * FROM tb_newuser;
数据表结构复制
CREATE TABLE tb_newuser02 LIKE tb_user;
创建表时导入
CREATE TABLE tb_newuser01 SELECT * FROM tb_user;
数据如何导出
导出语法: INSERT OVERWRITE/INTO LOCAL DIRECTORY '<directory>' SELECT_STATEMENT
INSERT OVERWRITE LOCAL DIRECTORY '/path/to/data' SELECT * FROM tb_user;
cat /path/to/data/000000_0
INSERT OVERWRITE DIRECTORY '/path/to/data' SELECT * FROM tb_user;
Local的有无, 其区别在于, 一个存放在本地, 另一个存放在hdfs上
posted on 2014-07-02 16:14 mumuxinfei 阅读(1226) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构