数据导出
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 ',';