hive使用

运行hadoop [root@hadoop0 ~]# start-all.sh 

进入命令行[root@hadoop0 ~]# hive

查询昨天的表 hive> select * from stu; 

显示数据库 hive> show databases

创建数据库 hive> create database test

使用数据库 hive> use test; 

把旧表数据导入新表 INSERT OVERWRITE TABLE test4 SELECT * FROM test1 

设置hive参数 hive> SET hive.exec.compress.output=true;

1 内部表

    Show databses;
    Use hive_data;

        1.1 创建内部表

  • CREATE TABLE SOGOUQ2(DT STRING,WEBSESSION STRING,WORD STRING,S_SEQ INT,C_SEQ INT,WEBSITE STRING) 
    ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' ;

    1.2 加载数据

  • LOAD DATA LOCAL INPATH '/data/software/sougou/SogouQ2.txt' INTO TABLE SOGOUQ2;
    Load hdfs data:
    LOAD DATA INPATH 'hdfs://shulaibao2:9010/home/hadoop/upload/test/sougou/SogouQ1.txt
    ' INTO TABLE SOGOUQ2;
  • 1.3 查看hdfs数据
  • hadoop fs -ls /user/hive/warehouse/hive_data.db
  • 1.4 操作数据库
  • select count(*) from SOGOUQ2; select count(*) from SOGOUQ2 where WEBSITE like '%baidu%';

    2 外部表

  • 2.1 创建hdfs数据存储目录
  • hadoop fs -mkdir -p  /home/hadoop/upload/hive/sogouq1
    hdfs dfs -ls  /home/hadoop/upload/hive/sogouq1
  • 2.2 创建表
  • CREATE EXTERNAL TABLE SOGOUQ1(DT STRING,WEBSESSION STRING,WORD STRING,S_SEQ INT,C_SEQ INT,WEBSITE STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' STORED AS TEXTFILE LOCATION '/home/hadoop/upload/hive/sogouq1';
    Show tables;
  • 2.3 加载数据
  • Hadoop fs -copy /home/hadoop/upload/test/sougou/SogouQ1.txt /home/hadoop/upload/hive/sogouq1
    hdfs关联:copy、mv
    本地系统数据关联:copyFromLocal
  • 2.4 操作数据库
  • select count(*) from SOGOUQ1;

    总结:【注】在删除表的时候,内部表将删除表的元数据和数据文件;而删除外部表的时候,仅仅删除外部表的元数据,不删除数据文件

posted @ 2018-03-14 12:10  夕阳下的无名草  阅读(216)  评论(0编辑  收藏  举报