hive 数据的加载与导出

数据导出

INSERT OVERWRITE LOCAL DIRECTORY 导出数据至本地文件系统中

-- 导出数据时,需要定字段间的分隔符
INSERT OVERWRITE LOCAL DIRECTORY "/usr/local/soft/data/student5" 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','  
SELECT
*
FROM learn2.student5

HDFS get 方法

-- 可以直接通过get命令下载表对应目录中的数据

hive -e >

-- 注意SQL中表需要给定库名称
[root@master ~]# hive -e "select * from learn1.student11" > /usr/local/soft/data/student11.txt;
cd

hive -f >

-- 和 -e模式一样,
-- hive -f SQL文件.sql > 本地文件系统路径
-- 通过执行 文件中的SQL语句 将结果保存至本地
--student8.txt需要先创建好
[root@master ~]# hive -f /root/student.sql > /usr/local/soft/data/student8.txt
​

export方法

-- 导出数据到HDFS中,包括表的元数据信息
​

hive> export table learn1.student5 to "/usr/local/soft/data/student5";

数据类型

简单数据类型

ØTINYINT — 微整型,只占用1个字节,只能存储0-255的整数。

ØSMALLINT– 小整型,占用2个字节,存储范围–32768 到 32767。

ØINT– 整型,占用4个字节,存储范围-2147483648到2147483647。

ØBIGINT– 长整型,占用8个字节,存储范围-2^63到2^63-1。

Ø布尔型BOOLEAN — TRUE/FALSE

Ø浮点型FLOAT– 单精度浮点数。

ØDOUBLE– 双精度浮点数。

Ø字符串型STRING– 不设定长度。

时间格式

Timestamp

DATE

create table learn2.testTime(
tt timestamp,
dt DATE
);
​
INSERT INTO TABLE learn2.testTime values("2022-09-09","2022-09-09");
-- NULL    2022-09-09
-- timestamp存储格式不能为日期格式
INSERT INTO TABLE learn2.testTime values("2022-09-09 11:00:00","2022-09-09 11:00:00");
-- DATE 存储格式不能为具体的时间格式
​
"2022-09-09 11:00:00"
"2022-09-09 11:00"
"2022/09/09 11:00:00"
-- 作用:由于存储格式不规范,返回的值为NULL,那么在实际操作过程中,可以利用该点,过滤有问题数据

Arrays

create table learn2.testArray(
tt array<string>
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY "/";
​
INSERT INTO TABLE learn2.testArray values("value1/value2")
​
-- 构件数组分隔符时,需要和列分隔符不能一样
create table learn2.testArray2(
id string,
tt array<string>,
name string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
COLLECTION ITEMS TERMINATED BY ",";

使用

-- 通过下标取值
select tt[1] from learn2.testArray;

Map

create table learn2.testMap(
id string,
maps map<string,int>,
name string
)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY "," Map KEYS TERMINATED BY ":";
​
1\t化学:80,物理:90,生物:70\tzhangsan
​
load data local inpath "/usr/local/soft/data/map.txt" into table learn2.testMap;

查询

select id,name,maps['化学'] from testmap;

Struct

create table learn2.testStruct(
object Struct<name:string,id:int>
)ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
COLLECTION ITEMS TERMINATED BY ",";
​
zhangsan,1
load data local inpath '/usr/local/soft/data/struct.txt' into table learn2.testStruct;

使用方式:通过列名称.属性方式取对应值

select object.id,object.name from learn2.testStruct;

类型转换 cast

select '1.1',cast('1.1' as int);
​
-- 如果数据满足条件情况下,那么Hive中会自动调用隐式转换
create table learn2.testType(
num string
);
insert into table learn2.testType values('3');
insert into table learn2.testType values('3.3');
​
select num + 2 from testType
​
-- 如果转换不成功,那么对应结果为NULL
select 'a',cast('a' as int);
​
-- 数据导入过程中可能会出现错位情况
create table learn2.test(
col1 string,
col2 string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值