- 说明
- 分享
- sql
- beeline
- 表数据导入导出
- 总结
分享本博客每周五更新一次。
本文记录hive知识,主要内容包括sql语句、beeline工具和表数据的导出和导入。
- 大数据博客列表
-
添加
- 添加字段:alter table 库名.表名 add columns(字段名 字段类型,字段名 字段类型)
- 添加分区:alter table 库名.表名 add if not exists partition (分区名='值',分区名='值');
- 添加数据:insert into 库名.表名 values("one","270");
- 部分字段添加数据:insert into 库名.表名 (字段一,字段二) values("one","270");
- 指定分区添加数据:insert into 库名.表名 partition(分区名="2020060919") values("one","270");
- 覆盖表添加:insert overwrite table 库名.表名 (字段一,字段二) values("one","270");
-
- 修改存储路径:alter table 库名.表名 set location '存储路径'
- 修改字段:alter table 库名.表名 change 旧字段名 新字段名 类型;
- 压缩格式存储的表,修改字段类型,原有数据不可使用,慎重
- 修改空值null为默认值0:alter table 库名.表名 set serdeproperties('serialization.null.format' = '0');
- 修改表名: alter table 库名.旧表名 to 库名.新表名
- 修改字段位置:alter table 表名 change 字段一 after 字段二;
- 将字段一移动到字段二后面,有可能因为数据类型修改报错,造成修改不成功。
- 修改分隔符:alter table 表名 set serdeproperties('field.delim'='t');,修改分隔符为t,建议同步修改下serialization.format
-
删除
- 删除分区:alter table 库名.表名 DROp IF EXISTS PARTITION (分区名='值',分区名='值');
- 删除字段: ALTER TABLE test REPLACE COLUMNS(id BIGINT, name STRING);
- 填写要保留的字段
-
查看
- 模糊查询表:show tables like '*name*';
- 表字段结构:desc 表名;
- 表创建语句:show create table 表名;
- beeline工具hive库远程连接命令:/usr/hdp/current/hive-client/bin/beeline -u jdbc:hive2://ip:10000 -n 用户名 -p 密码 -d org.apache.hive.jdbc.HiveDriver
-
导出数据beeline -u jdbc:hive2://host:10000 --incremental=true --showHeader=false --outputformat=dsv --delimiterForDSV=$'t' -e 'select * from test' > file.csv
- –showHeader是否显示表头,只显示一行表头,不会多行。
- –outputformat=table/vertical/csv/tsv/dsv/csv2/tsv2,结果展示的模式。默认是table。dsv可配合delimiterForDSV一起使用,设置分隔
- –delimiterForDSV 指定输出格式中划分值的界定符。默认是‘|’,如果需要输入特殊符号,如’n001’ ,’x01’等需在前面加$,例 --delimiterForDSV=$’t’
-
导入数据
- 标准方法:
- 用beeline将数据导入表中,需要先将文件上传到hadoop,比如上传到tmp下:hadoop fs -put 路径/data.txt /tmp/
- 进入beeline里面执行:load data inpath ‘/tmp/data.txt’ overwrite into table 表名
- 实用方法
- 将数据上传到指定hive表分区目录下
- 为hive表创建对应分区
- 标准方法:
- hive表数据存储如果为压缩格式如orc、parquet等,修改表字段结构,源数据不可用,因为表存储压缩格式数据,无法随着表结构变化动态改变。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)