大数据开发之Hive应用分析

Hive架构

1.用户接口:Client

CLI(hive shell) JDBC(java访问hive) WEBUI(浏览器访问hive)

2.元数据(Metastore)-数据库

元数据包括:表名称、表所属的数据库、表的拥有者、列/分区字段名、表的类型(外部/内部)、表的数据所在的目录

默认存储在自带的derby的数据库中,推​​大数据培训​​荐使用Mysql来存储元数据

3.hadoop

hive使用HDFS进行数据的存储,使用MR进行数据的计算

4.驱动器:driver

包含:解析器 -> 优化器 -> 编译器 -> 执行器

Hive的优点和使用场景

1.简单易用(操作接口采用类SQL语法,提供快速开发的能力)

2.避免我们去写MR,减少开发人员的学习成本

3.统一的元数据管理,可与impala、spark等共享数据

4.易扩展

5.数据的离线处理:比如日志分析,海量结构化数据离线分析

6.Hive的执行延迟比较高,因此Hive常用于数据离线分析,适合实时性要求不高的场景

7.Hive优势在于处理大数据,对于处理小数据没有优势,因为hive的执行延迟性很高。

Hive常用的命令

1.show databases; //查看数据库
2.create database db_hive; //创建数据库
3.drop database db_hive; //删除数据库(数据库内无表)
4.use db_hive;  //使用数据库
5.创建表:
CREATE TABLE u_data (
  userid INT,
  movieid INT,
  rating STRING,
  unixtime STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE;  //textfile文本,以“,”为分隔符


6.load data local inpath '/opt/datas/ratings.txt' into table u_data; //加载本地数据到表中
7.select * from u_data;  //查询表
8.select userid from u_data;  //字段查询
9.select count(1) u_count from u_data; //统计行数,进行mr计算
10.desc u_data;  //描述表信息
11.desc extended u_data;  //描述表具体信息(无序)
12.desc formatted u_data;  //描述具体信息(有序)
13.show functions;  //查看hive自带所有函数
14.desc function upper;  //查看upper函数的说明
15.desc function extended uppper;  //查看upper函数的具体说明
16.select userid,upper(username) uppper_name from student;  //利用upper函数进行大写转换

Hive常用的配置属性

1.Hive数据仓库位置配置:hive-default.xml

  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>  //数仓地址
    <description>location of default database for the warehouse</description>
  </property>
//赋权命令
  $ $HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
  $ $HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse

2.Hive运行日志的配置:hive-log4j.properties

hive.log.dir=/opt/modules/hive-1.1.0-cdh5.5.0/logs //日志存放目录
hive.log.file=hive.log

3.Hive运行日志的级别:hive-log4j.properties

hive.root.logger=info,DRFA //可改为(DEBUG,DRFA)

4.在cli命令行上显示当前数据库名称,以及查询表的表头信息:hive-site.xml

  <property>
    <name>hive.cli.print.header</name>
    <value>true</value>  //打开查询表会显示列名
  </property>


  <property>
    <name>hive.cli.print.current.db</name>
    <value>true</value>  //打开客户端会显示所在数据库
  </property>

5.在启动hive时设置配属属性项信息

 bin/hive --hiveconf <property=value> 
 
 eg:   
 bin/hvie --hiveconf  hive.cli.print.header=false //将表头关闭

要注意此种方式的设置,仅仅在当前会话session中有效,退出则失效。

6.查看hive当前所有的配置信息

  set;
  set hive.cli.print.header;
  set hive.cli.print.header=false; //将表头关闭

修改配置信息优先级:

  • set -> --hiveconf -> hive-site.xml -> hive-defualt.xml

Hive shell常用的操作

  bin/hive -help
 usage: hive
 -d,--define <key=value>          Variable subsitution to apply to hive
                                  commands. e.g. -d A=B or --define A=B
    --database <databasename>     Specify the database to use
 -e <quoted-query-string>         SQL from command line
 -f <filename>                    SQL from files
 -H,--help                        Print help information
    --hiveconf <property=value>   Use value for given property
    --hivevar <key=value>         Variable subsitution to apply to hive
                                  commands. e.g. --hivevar A=B
 -i <filename>                    Initialization SQL file
 -S,--silent                      Silent mode in interactive shell
 -v,--verbose                     Verbose mode (echo executed SQL to the
                                  console)
  1. bin/hive -e "select * from db_hive.student"
     bin/hive -e "select count(1) from db_hive.student"  
     可直接执行查询语句
  2.bin/hive -f /opt/jars/stu.sql
  可直接执行sql文件进行查询交互
  3.save result
    bin/hive -f stu.sql   >  /opt/datas/student.txt
    将查询结果储存到本地

Hive中数据库的操作方式

  CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
    [COMMENT database_comment]
    [LOCATION hdfs_path]
    [WITH DBPROPERTIES (property_name=property_value, ...)];
1.create database db_hive;
      CREATE DATABASE IF NOT EXISTS db_hive  --- 标准方式
      CREATE DATABASE IF NOT EXISTS db_kfk LOCATION  '/user/kfk/kfkwarehouse';
2.drop database
      DROP (DATABASE|SCHEMA) [IF EXISTS] database_name [RESTRICT|CASCADE];
      drop database IF EXISTS db_kfk;--- 标准方式
      drop database IF EXISTS db_hive cascade; --- 当数据库里有表时可直接删除
3.use database
      USE database_name;

Hive中数据库表的创建方式(三种)

第一种:创建Textfile类型以“,”为分隔符的表

  CREATE  TABLE IF NOT EXISTS db_name.table_name  
    (col_name data_type  )
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    STORED AS TEXTFILE;
    
eg:
  CREATE TABLE student (
    userid string,
    username string)
  ROW FORMAT DELIMITED
  FIELDS TERMINATED BY ','
  STORED AS TEXTFILE;

第二种:复制已有表或视图的结构

  CREATE TABLE IF NOT EXISTS db_name.table_name
    LIKE existing_table_or_view_name
    
eg:
  CREATE  TABLE IF NOT EXISTS db_hive.stu
    LIKE db_hive.student

第三种:复制已有表的结构和数据

  CREATE  TABLE IF NOT EXISTS db_name.table_name  
  AS select * from table


  eg:
    CREATE  TABLE IF NOT EXISTS db_hive.stu  
  AS select * from db_hive.student
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值