hadoop操作命令
基本命令格式:
hadoop fs -cmd < args >
增
- 创建目录
hadoop fs -mkdir -p < hdfs path>
删
- 删除文件
hadoop fs -rm < hdfs file >
- 删除目录
hadoop fs -rm -r < hdfs dir> #删除目录
hadoop fs -rm -r < hdfs dir>/* #删除目录中的内容
改
- 修改路径
hadoop fs -mv < hdfs file or dir >... < hdfs dir >
hadoop fs -cp < hdfs file > < hdfs file >
查
- 查看目录文件
hadoop fs -ls -R /
- 查询文件数目
hadoop fs -count < hdfs path >
-
查询文件大小
hadoop fs -du - h < hdsf path>
- 路径的状态信息
hdoop fs -stat [format] < hdfs path > [format]可选参数有:%b(文件大小),%o(Block大小),%n(文件名),%r(副本个数),%y(最后一次修改日期和时间)
其他
- 上传本地文件至hdfs中
hadoop fs -put < local file or dir >...< hdfs dir > hdfs dir 一定要存在,否则命令不会执行
- 下载hdfs文件至本地
hadoop fs -get < hdfs file > < local file or dir> local file不能和 hdfs file名字不能相同,否则会提示文件已存在
hive操作命令
执行环境
hive环境中所有命令续以分号“;”结尾。
hive 终端输入该命令即可进入hive环境
hive>quit; 退出hive环境
输出字段设置
set hive.cli.print.header=true;
增
-
创建表
CREATE EXTERNAL TABLE ${table_name} #创建一个指定名字的表。若该表存在,则抛出异常;EXTERNAL,外部表,须指定LOCATION
(
cookie string comment '用户COOKIE', #字段信息:key, key类型, 注释
price int comment '用户对应车型价格',
source int comment '来源'
)
PARTITIONED BY(dt STRING, type STRING) #两个分区,每一个分区单独存在一个目录下
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' #'\t'为分割符,'\n'为换行符
STORED AS TEXTFILE #存储格式:TEXTFILE(默认), RCFILE(行列存储),INPUTFORMAT(自定义)
LOCATION '${HDFS_DIR}/${hive_db}/${table_level}/${table_name}'; #指定位置
ALTER TABLE ${table_name} SET SERDEPROPERTIES('serialization.null.format'=''); #修改表中默认的NULL为''
CREATE TABLE IF NOT EXISTS `jiaodiantu`(
`id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY comment '主键id',
`caller` INT UNSIGNED comment '调用方id',
`device` INT UNSIGNED comment '设备id',
`dst_img` VARCHAR(100) NOT NULL comment '焦点图url',
`txt_img` VARCHAR(100) NULL comment '文字图url',
`status` BOOLEAN comment 'dst_img删除状态',
`Created_STime` DATETIME NOT NULL default CURRENT_TIMESTAMP comment '创建时间',
`Modified_STime` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '修改时间'
)ENGINE=InnoDB DEFAULT CHARSET=utf8 comment '焦点图';
-
复制表,不复制数据
CREATE TABLE ${new_table_name} LIKE ${old_table_name};
- 增加分区
alter table ${table_name} add partition(dt='2017-11-01') location '${HDFS_DIR}/${hive_db}/${table_level}/${table_name}/part20171101';
删
-
删除表
drop table if exists ${table_name};
- 删除分区
alter table ${table_name} drop partition(dt ='2017-11-01', type='test');
改
-
更改分区表的位置
- 修改表的名字
alter table ${old_name} rename to ${new_name};
查
- 查询hive库
show databases; 查看所有hive库列表
desc database ${db_name}; 查看hive库信息
- 查询表字段
show tables; 查看表列表
desc ${table_name}; 查看某表信息
-
查看表的分区
show partitions ${table_name}; #
其他
-
上传本地文件至hive表
load data local inpath '/data/home/hzhj/car_list.txt' overwrite into table car_list partition(dt='2017-11-01',type='train'); #overwrite:重写,会覆盖之前所有数据
参考文献: