一、hive 的数据导入
Linux本地文件以及数据格式:
在hive中创建表:
createtable t_user(
id int,name string
)row format delimited
fieldsterminatedby","linesterminatedby'\n'
stored as textfile;
stored as常见的几种格式
1. TextFile:使用TextFile格式存储的表将数据以文本文件的形式进行存储。这是最常用的默认存储格式。
2. SequenceFile:使用SequenceFile格式存储的表将数据以键-值对的形式存储,适用于数据压缩和高效读取。
3. ORC(Optimized Row Columnar):ORC是Hive的一种高性能列式存储格式,它以列的方式组织数据,提供了更高的压缩率和查询性能。
4. Parquet:Parquet是一种列式存储格式,也是Hive的一个常用选项。它支持高度压缩和谓词下推等优化,适用于大规模数据分析。
5. Avro:Avro是一种跨语言的数据序列化系统,Hive可以使用Avro格式存储数据!
加载本地数据
loaddatalocal inpath '/home/hivedata/user.txt'intotable t_user ;-- 如果在into前面加了overwrite就是覆盖之前的数据重新导入数据
加载hdfs上的数据
*注意:hdfs上需要有数据
从本地上传文件到hdfs上
// 追加添加loaddata inpath '/yan/hivedata/user.txt'intotable t_user;//覆盖添加loaddata inpath '/yan/hivedata/user.txt'intotable t_user;
把别的表中的数据插入目标表
createtable u1(
id int,
name string
);insertinto u1
(select id ,name from t_user);
# 查询一次插入多个表 ,把from写在前面from t_user
insertinto u2 select*insertinto u3 select id ,name;
克隆表
-- 把表结构和数据一起复制createtable u4 asselect*from t_user;-- 只复制表结构,只需要使用like 表名即可,不用selectcreatetable u5 like t_user;
本地数据导入和hdfs数据导入的区别:
本地:将数据copy到hdfs的表目录下
hdfs:将数据剪切到hdfs的表目录下
二、hive中数据的导出
导出到本地文件系统的目录下
# 必须加overwriteinsert overwrite local directory '/home/hivedata/out/out1'select*from t_user;# 在本地Linux系统中,最后一级的out1也是目录
导出到hdfs的目录下
-- 比本地少了localinsert overwrite directory '/yan/hivedata/out/out1'select*from t_user;
导出的数据文件中,默认字段不分割,其中的方括号是hdfs默认的分隔,之前的逗号分隔符没有了
把hdfs上的数据导入到Linux本地:
hive -e 'select * from zoo.t_user'>> /home/hivedata/out/out2/02
# 02是我建的空文件# 导出的文件中字段分隔符默认是\t
版权归原作者 ~提线木偶 所有, 如有侵权,请联系我们删除。