hive命令(基础)

1.hive模糊搜索表
  show tables like '*name*';

2.查看表结构信息
  desc formatted table_name;
  desc table_name;

3.查看分区信息
  show partitions table_name;

4.根据分区查询数据
  select table_coulm from table_name where partition_name = '2018-01-25';

5.查看hdfs文件信息
  dfs -ls /user/hive/zld/table02;

6.从文件加载数据进表(OVERWRITE覆盖,追加不需要OVERWRITE关键字)
  LOAD DATA LOCAL INPATH 'dim_csl_rule_config.txt' OVERWRITE into table dim.dim_csl_rule_config;
  --从查询语句给table插入数据
  INSERT OVERWRITE TABLE test_h02_click_log PARTITION(dt) select * 
  from stage.s_h02_click_log where dt='2018-01-25' limit 100;

7.导出数据到文件
  insert overwrite directory '/tmp/csl_rule_cfg' select a.* from dim.dim_csl_rule_config a;
  hive -e "select day_id,pv,uv,ip_count,click_next_count,second_bounce_rate,return_visit,pg_type from tmp.tmp_h02_click_log_baitiao_ag_sum where day_id in ('2018-01-25');"> /home/jrjt/testan/baitiao.dat;

8.自定义udf函数
  1.继承UDF类
  2.重写evaluate方法
  3.把项目打成jar包
  4.hive中执行命令add jar /home/jrjt/dwetl/PUB/UDF/udf/GetProperty.jar;
  5.创建函数create temporary function get_pro as 'jd.Get_Property'//jd.jd.Get_Property为类路径;
 
9.查询显示列名 及 行转列显示 
  set hive.cli.print.header=true; // 打印列名
  set hive.cli.print.row.to.vertical=true; // 开启行转列功能, 前提必须开启打印列名功能
  set hive.cli.print.row.to.vertical.num=1; // 设置每行显示的列数

10.查看表文件大小,下载文件到某个目录,显示多少行到某个文件
   dfs -du hdfs://BJYZH3-HD-JRJT-4137.jd.com:54310/user/jrjt/warehouse/stage.db/s_h02_click_log;
   dfs -get /user/jrjt/warehouse/ods.db/o_h02_click_log_i_new/dt=2018-01-25/000212_0 /home/jrjt/testan/;
   head -n 1000 文件名 > 文件名

11.杀死某个任务  不在hive shell中执行
   hadoop job -kill job_201403041453_58315
 
12.hive-wui路径
   http://192.168.107.1/jobtracker.jsp

13.删除分区
   alter table tmp_h02_click_log_baitiao drop partition(dt='2018-01-25');
   alter table d_h02_click_log_basic_d_fact drop partition(dt='2018-01-25');
   

14.hive命令行操作
   执行一个查询,在终端上显示mapreduce的进度,执行完毕后,最后把查询结果输出到终端上,接着hive进程退出,不会进入交互模式。
   hive -e 'select table_cloum from table'
   -S,终端上的输出不会有mapreduce的进度,执行完毕,只会把查询结果输出到终端上。这个静音模式很实用,,通过第三方程序调用,第三方程序通过hive的标准输出获取结果集。
   hive -S -e 'select table_cloum from table'
   执行sql文件
   hive -f hive_sql.sql

 15.hive上操作hadoop文件基本命令
    查看文件大小
    dfs -du /user/jrjt/warehouse/tmp.db/tmp_h02_click_log/dt=2018-01-25;
    删除文件
    dfs -rm /user/jrjt/warehouse/tmp.db/tmp_h02_click_log/dt=2018-01-25;

 16.插入数据sql、导出数据sql
    1.insert 语法格式为:
    基本的插入语法:
    INSERT OVERWRITE TABLE tablename [PARTITON(partcol1=val1,partclo2=val2)]select_statement FROM from_statement
    insert overwrite table test_insert select * from test_table;

    对多个表进行插入操作:
    FROM fromstatte
    INSERT OVERWRITE TABLE tablename1 [PARTITON(partcol1=val1,partclo2=val2)]select_statement1
    INSERT OVERWRITE TABLE tablename2 [PARTITON(partcol1=val1,partclo2=val2)]select_statement2

    from test_table                     
    insert overwrite table test_insert1 
    select key
    insert overwrite table test_insert2
    select value;

    insert的时候,from子句即可以放在select 子句后面,也可以放在 insert子句前面。
    hive不支持用insert语句一条一条的进行插入操作,也不支持update操作。数据是以load的方式加载到建立好的表中。数据一旦导入就不可以修改。

    2.通过查询将数据保存到filesystem
    INSERT OVERWRITE [LOCAL] DIRECTORY directory SELECT.... FROM .....

    导入数据到本地目录:
    insert overwrite local directory '/home/zhangxin/hive' select * from test_insert1;
    产生的文件会覆盖指定目录中的其他文件,即将目录中已经存在的文件进行删除。

    导出数据到HDFS中:
    insert overwrite directory '/user/zhangxin/export_test' select value from test_table;

    同一个查询结果可以同时插入到多个表或者多个目录中:
    from test_insert1
    insert overwrite local directory '/home/zhangxin/hive' select * 
    insert overwrite directory '/user/zhangxin/export_test' select value;

 17.mapjoin的使用 应用场景:1.关联操作中有一张表非常小 2.不等值的链接操作
    select /*+ mapjoin(A)*/ f.a,f.b from A t join B f  on ( f.a=t.a and f.ftime=***********) 


 18.查看perl进程
   ps -ef|grep perl

 19.导出白条数据
    hive -e "select day_id,pv,uv,ip_count,click_next_count,second_bounce_rate,return_visit,pg_type from tmp.tmp_h02_click_log_baitiao_ag_sum where day_id like '2018-01%';"> /home/jrjt/testan/baitiao.xlsx;
   
 20.hive修改表名
    ALTER TABLE o_h02_click_log_i RENAME TO o_h02_click_log_i_bk;
  
 21.hive复制表结构
   CREATE TABLE d_h02_click_log_baitiao_ag_sum LIKE tmp.tmp_h02_click_log_baitiao_ag_sum;

 22.hive添加字段
   alter table tmp_h02_click_log_baitiao_ag_sum add columns(current_session_timelenth_count bigint comment '页面停留总时长');
   ALTER TABLE tmp_h02_click_log_baitiao CHANGE current_session_timelenth current_session_timelenth bigint comment '当前会话停留时间';
   
 23.hive开启简单模式不启用mr

   set hive.fetch.task.conversion=more;

 24.以json格式输出执行语句会读取的input table和input partition信息

   Explain dependency query  




来自@若泽大数据

### Hive基础命令列表及用法 #### 创建数据库 用于创建新的数据库。 ```sql CREATE DATABASE database_name; ``` 此命令会创建一个名为 `database_name` 的新数据库[^1]。 #### 使用数据库 切换到指定的数据库。 ```sql USE database_name; ``` #### 查看现有数据库 显示当前可用的所有数据库。 ```sql SHOW DATABASES; ``` #### 删除数据库 删除不再需要的数据库。 ```sql DROP DATABASE database_name; ``` 注意:只有当数据库为空时才能被删除[^2]。 #### 创建表 创建一张新表。 ```sql CREATE TABLE table_name (column1 datatype, column2 datatype); ``` #### 加载数据 将本地文件加载到Hive表中。 ```bash hadoop fs -put /path/to/local/file /path/in/hdfs/ LOAD DATA INPATH '/path/in/hdfs/' INTO TABLE table_name; ``` 或者直接从本地路径加载: ```sql LOAD DATA LOCAL INPATH '/local/path' INTO TABLE table_name; ``` #### 查询数据 查询表中的数据。 ```sql SELECT * FROM table_name; ``` #### 数据排序 使用 `ORDER BY` 对结果集进行全局排序。需要注意的是,这会使整个作业只使用单个 reducer 来完成排序工作。 ```sql SELECT * FROM table_name ORDER BY column_name; ``` 如果希望并行处理多个 reducer 并仅在每个 reducer 输出内部排序,则可以使用 `SORT BY`[^2]: ```sql SELECT * FROM table_name SORT BY column_name; ``` #### 过滤数据 通过条件过滤数据。 ```sql SELECT * FROM table_name WHERE condition; ``` #### 插入数据 向表中插入数据。 ```sql INSERT INTO TABLE table_name SELECT * FROM another_table; ``` #### 修改表结构 添加列至现有的表。 ```sql ALTER TABLE table_name ADD COLUMNS (new_column datatype); ``` #### 删除表 移除不需要的表及其所有数据。 ```sql DROP TABLE table_name; ``` #### 显示表详情 查看特定表的信息。 ```sql DESCRIBE FORMATTED table_name; ``` #### 导出数据 导出表的数据到 HDFS 或者本地磁盘。 ```bash INSERT OVERWRITE DIRECTORY '/output/directory' SELECT * FROM table_name; ``` 对于本地存储: ```bash hive -e "SELECT * FROM table_name;" > /local/output/file.txt ``` #### 启动服务 启动 Hive Metastore 和 HiveServer2 服务以便客户端连接访问。 ```bash hive --service metastore & hive --service hiveserver2 & ``` 可以通过以下方式验证 HiveServer2 是否正常运行[^1]: ```bash netstat -anop | grep 10000 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值