上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

Hive基础和使用详解

guduadmin11天前

文章目录

    • 一、启动hive
      • 1. hive启动的前置条件
      • 2. 启动方式一: hive命令
      • 3. 方式二:使用jdbc连接hive
      • 二、Hive常用交互命令
        • 1. hive -help 命令
        • 2. hive -e 命令
        • 3. hive -f 命令
        • 4. 退出hive窗口
        • 5. 在hive窗口中执行dfs -ls /;
        • 三、Hive语法
          • 1.DDL语句
            • 1.1 创建数据库
            • 1.2 两种方式查询数据库
            • 1.3 显示数据库信息
            • 1.4 切换数据库
            • 1.5 修改数据库配置信息
            • 1.6 删除数据库
            • 1.7 创建hive表(重点)
              • 1.7.1 hive详细的建表语句
              • 1.7.2 创建hive内部表:
              • 1.7.3 创建hive外部表:
              • 2. DML语句
                • 2.1 向表中装载数据(Load)
                • 2.2 Load命令 添加 overwrite, 数据去重
                • 利用含数据的txt文件,添加数据到外部表中
                • 查看建表信息
                • 2.3 删除内部表
                • 2.4 删除外部表
                • 四、Hive其他参考资料

                  一、启动hive

                  1. hive启动的前置条件

                  1.保证hdfs和yarn已启动

                  2.保证hive的元数据库mysql已启动

                  Hive基础和使用详解,在这里插入图片描述,第1张

                  Hive基础和使用详解,在这里插入图片描述,第2张

                  Hive基础和使用详解,在这里插入图片描述,第3张

                  2. 启动方式一: hive命令

                  --切换到hive目录下的bin目录
                   cd /opt/softs/hive3.1.2/bin/
                  --执行hive命令
                  hive
                  

                  3. 方式二:使用jdbc连接hive

                  (1)在hive目录下配置文件hive-site.xml

                  cd /opt/softs/hive3.1.2/conf/
                  ll
                  vim hive-site.xml
                  
                  
                  
                  
                    
                    
                      javax.jdo.option.ConnectionURL
                      jdbc:mysql://bigdata03:3306/hive?createDatabaseIfNotExist=true
                    
                    
                    
                      javax.jdo.option.ConnectionDriverName
                      com.mysql.jdbc.Driver
                    
                    
                    
                      javax.jdo.option.ConnectionUserName
                      root
                    
                    
                    
                      javax.jdo.option.ConnectionPassword
                      111111
                    
                     
                    
                          hive.metastore.warehouse.dir
                          /user/hive/warehouse
                     
                     
                    
                          hive.server2.thrift.bind.host
                      bigdata03
                    
                          
                    
                          hive.server2.thrift.port
                      10000
                    
                    
                      hive.server2.enable.doAs
                      false
                    
                  
                  

                  Hive基础和使用详解,在这里插入图片描述,第4张

                  (2) 启动hiveserver2

                  -- 启动hiveserver2命令
                  hive --service hiveserver2
                  -- 注意:启动hiveserver2服务需要些时间才能启动完成,
                  且没有返回可输入命令行的界面,需要另开一个tab页面输入执行相关的命令指令
                  进阶的启动方式
                  (1)/opt/softs/hive3.1.2目录下创建logs目录
                  cd /opt/softs/hive3.1.2
                  mkdir logs
                  (2)执行如下命令
                  cd /opt/softs/hive3.1.2/bin/
                  nohup hive --service hiveserver2 1>/opt/softs/hive3.1.2/logs/hive.log 2>/opt/softs/hive3.1.2/logs/hive_err.log &
                  -- nohup:放在命令的开头,表示的意思为不挂起即关闭终端进程也保持允许状态
                  --1:代表标准日志输出
                  --2:表示错误日志输出
                  -- &:代表在后台运行
                  所以整个命令可以理解为:将hiveserver2服务后台运行在标准日志输出到hive.1og,错误日志输出到hive_err.log,唧使关闭终端(窗口),也会保持运行状态
                  

                  (3)执行beeline命令

                  beeline -u jdbc:hive2://bigdata03:10000 -root
                  

                  Hive基础和使用详解,在这里插入图片描述,第5张

                  进阶:

                  Hive基础和使用详解,在这里插入图片描述,第6张

                  注意:执行beeline命令时可能会报错,因为启动hiveserver2需要两三分钟时间,只有等hiveserver2启动完成后,可能用beeline命令完成jdbc连接。

                  二、Hive常用交互命令

                  1. hive -help 命令

                   hive -help
                  

                  Hive基础和使用详解,在这里插入图片描述,第7张

                  2. hive -e 命令

                  hive -e "show databases"
                  

                  不进入hive的交互窗口执行sql语句

                  Hive基础和使用详解,在这里插入图片描述,第8张

                  3. hive -f 命令

                  执行文件中的sql语句

                  -- 创建文件
                   cd /opt/file/
                   touch hive_sql.txt
                   vim hive_sql.txt
                  
                  -- 添加sql语句命令“show databases”
                  show databases
                  
                  cat hive_sql.txt
                  -- 将执行结果写入到新文件中
                  hive -f /opt/file/hive_sql.txt >/opt/file/query_result.txt
                  -- 查看执行结果
                  cat query_result.txt
                  

                  Hive基础和使用详解,在这里插入图片描述,第9张

                  4. 退出hive窗口

                  (1) exit;

                  (2) quit;

                  5. 在hive窗口中执行dfs -ls /;

                  在hive窗口中执行 dfs -ls /; 查看hdfs文件系统

                  Hive基础和使用详解,在这里插入图片描述,第10张

                  三、Hive语法

                  1.DDL语句

                  Hive基础和使用详解,在这里插入图片描述,第11张

                  Hive基础和使用详解,在这里插入图片描述,第12张

                  1.1 创建数据库
                  create database if not exists bigdata;
                  

                  Hive基础和使用详解,在这里插入图片描述,第13张

                  1.2 两种方式查询数据库

                  Hive基础和使用详解,在这里插入图片描述,第14张

                  show databases;
                  show databases like "big*";
                  

                  Hive基础和使用详解,在这里插入图片描述,第15张

                  1.3 显示数据库信息

                  Hive基础和使用详解,在这里插入图片描述,第16张

                  desc database bigdata;
                  desc database extended bigdata;
                  

                  Hive基础和使用详解,在这里插入图片描述,第17张

                  1.4 切换数据库

                  Hive基础和使用详解,在这里插入图片描述,第18张

                  1.5 修改数据库配置信息

                  Hive基础和使用详解,在这里插入图片描述,第19张

                  alter database bigdata set dbproperties('createtime'='20230423');
                  desc database extended bigdata;
                  

                  Hive基础和使用详解,在这里插入图片描述,第20张

                  同时也可以看到数据在hdfs上的存储路径(Location):

                  hdfs://bigdata03:8028/user/hive/warehouse/bigdata.db

                  Hive基础和使用详解,在这里插入图片描述,第21张

                  1.6 删除数据库

                  注意:两种语法对应的一个是 空数据库,一个是 非空数据库

                  Hive基础和使用详解,在这里插入图片描述,第22张

                  1.7 创建hive表(重点)

                  Hive基础和使用详解,在这里插入图片描述,第23张

                  1.7.1 hive详细的建表语句
                  CREATE [EXTERNAL] TABLE [IF NOT EXIST] table_name
                  [(col_name data_type [COMMENT COL_COMMENT],.....)]
                  [COMMENT table_comment]
                  [PARTITIONED BY (col_name data_type [COMMENT col_comment],....)]
                  [CLUSTERED BY (col_name,col_name,....)]
                  [SORTED BY (col_name [ASC|DESC],...)] INFO num_buckets BUCKETS]
                  [ROW FORMAT DELIMITED FIELDS TERMINATED BY ',']
                  [STORED AS file_format]
                  [LOCATION hdfs_path]
                  字段解释
                  1 CREATE TABLE创建一个指定名字的表,如果名字相同抛出异常,用户可以使用IF NOT EXIST来忽略异常
                  2 EXTERNAL关键字可以创建一个外部表,在建表的同时指定一个实际数据的路径(LOCATION)
                  ,hive在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据
                  3 COMMENT是为表和列添加注释
                  4 PARTITIONED BY是分区表
                  5 CLUSTERED BY 是建分桶(不常用)
                  6 SORTED BY 是指定字段进行排序(不常用)
                  7 ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 是指每行数据中列分隔符为"," 
                  默认分隔符为" 
                  1.7.2 创建hive内部表:
                  1" 8 STORED AS 指定存储文件类型,数据文件是纯文本,可以使用STORED AS TEXTFILE 9 LOCATION 指定表在HDFS上的存储位置,内部表不要指定, 但是如果定义的是外部表,则需要直接指定一个路径。

                  对sale_detail 中的数据:

                  1,小明,男,iphone14,5999,1

                  2,小华,男,飞天茅台,2338,2

                  3,小红,女,兰蔻小黑瓶精华,1080,1

                  4,小魏,未知,米家走步机,1499,1

                  5,小华,男,长城红酒,158,10

                  6,小红,女,珀莱雅面膜,79,2

                  7,小华,男,珠江啤酒,11,3

                  8,小明,男,Apple Watch 8,2999,1

                  CREATE TABLE IF NOT EXISTS bigdata.ods_sale_detail
                  ( 
                    sale_id    INT      COMMENT  "销售id"
                   ,user_name  STRING   COMMENT  "用户姓名"
                   ,user_sex   STRING   COMMENT  "用户性别"
                   ,goods_name STRING   COMMENT  "商品名称"
                   ,prcie      INT      COMMENT  "单价"
                   ,sale_count INT      COMMENT  "销售数量"
                  )
                  COMMENT "销售内部表"
                  ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
                  STORED AS TEXTFILE;
                  
                  1.7.3 创建hive外部表:

                  Hive基础和使用详解,在这里插入图片描述,第24张

                  查看建表结果

                  Hive基础和使用详解,在这里插入图片描述,第25张

                  CREATE EXTERNAL TABLE IF NOT EXISTS bigdata.ods_sale_detail_external
                  ( 
                    sale_id    INT      COMMENT  "销售id"
                   ,user_name  STRING   COMMENT  "用户姓名"
                   ,user_sex   STRING   COMMENT  "用户性别"
                   ,goods_name STRING   COMMENT  "商品名称"
                   ,price      INT      COMMENT  "单价"
                   ,sale_count INT      COMMENT  "销售数量"
                  )
                  COMMENT "销售外部表"
                  ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
                  STORED AS TEXTFILE
                  LOCATION "/bigdata/hive/external_table/ods/ods_sale_detail_external";
                  

                  2. DML语句

                  Hive基础和使用详解,在这里插入图片描述,第26张

                  Hive基础和使用详解,在这里插入图片描述,第27张

                  2.1 向表中装载数据(Load)
                  -- load data [local] inpath '数据的 path' [overwrite] into table dbname.tablename [partition (partcol1=val1,…)];
                  -- 不含overwrite,多次执行装载Load会不去重
                  load data local inpath '/opt/file/sale_detail.txt' into table bigdata.ods_sale_detail;
                  

                  Hive基础和使用详解,在这里插入图片描述,第28张

                  在虚拟机bigdata03的 /opt/file目录下创建 sale_detail.txt 文件, 添加:

                  1,小明,男,iphone14,5999,1

                  2,小华,男,飞天茅台,2338,2

                  3,小红,女,兰蔻小黑瓶精华,1080,1

                  4,小魏,未知,米家走步机,1499,1

                  5,小华,男,长城红酒,158,10

                  6,小红,女,珀莱雅面膜,79,2

                  7,小华,男,珠江啤酒,11,3

                  8,小明,男,Apple Watch 8,2999,1

                  2.2 Load命令 添加 overwrite, 数据去重

                  Load命令 不含overwrite,多次执行装载Load会不去重

                  Hive基础和使用详解,在这里插入图片描述,第29张

                  再次执行Load命令:

                  Hive基础和使用详解,在这里插入图片描述,第30张

                  再次查看数据表,会发现数据会再次追加,不会去重

                  Hive基础和使用详解,在这里插入图片描述,第31张

                  load data local inpath '/opt/file/sale_detail.txt' overwrite into table bigdata.ods_sale_detail;
                  

                  Load命令 添加 overwrite,多次执行装载Load会去重

                  利用含数据的txt文件,添加数据到外部表中

                  Hive基础和使用详解,在这里插入图片描述,第32张

                  hadoop fs -put /opt/file/sale_detail.txt /bigdata/hive/external_table/ods/ods_sale_detail_external
                  
                  查看建表信息

                  Hive基础和使用详解,在这里插入图片描述,第33张

                  命令行界面查询外部表数据:

                  Hive基础和使用详解,在这里插入图片描述,第34张

                  2.3 删除内部表

                  Hive基础和使用详解,在这里插入图片描述,第35张

                  可以发现表bigdata.ods_sale_detail的存储路径等信息

                  LOCATION

                  | ‘hdfs://bigdata03:8020/user/hive/warehouse/bigdata.db/ods_sale_detail’ |

                  drop table bigdata.ods_sale_detail;
                  

                  删除内部表ods_sale_detail

                  Hive基础和使用详解,在这里插入图片描述,第36张

                  2.4 删除外部表

                  删除后查看该内部表是否还存在:

                  hadoop fs -ls /user/hive/warehouse/bigdata.db/ods_sale_detail

                  删除成功(表和数据一起删除):

                  Hive基础和使用详解,在这里插入图片描述,第37张

                  CREATE EXTERNAL TABLE IF NOT EXISTS bigdata.ods_sale_detail_external
                  ( 
                    sale_id    INT      COMMENT  "销售id"
                   ,user_name  STRING   COMMENT  "用户姓名"
                   ,user_sex   STRING   COMMENT  "用户性别"
                   ,goods_name STRING   COMMENT  "商品名称"
                   ,price      INT      COMMENT  "单价"
                   ,sale_count INT      COMMENT  "销售数量"
                  )
                  COMMENT "销售外部表"
                  ROW FORMAT DELIMITED FIELDS TERMINATED BY ","
                  STORED AS TEXTFILE
                  LOCATION "/bigdata/hive/external_table/ods/ods_sale_detail_external";
                  

                  删除外部表ods_sale_detail_external

                  drop table bigdata.ods_sale_detail_external;

                  Hive基础和使用详解,在这里插入图片描述,第38张

                  删除外部表后,只删表结构,不能在命令行界面查询

                  Hive基础和使用详解,在这里插入图片描述,第39张

                  但外部文件还在,数据依旧保留

                  Hive基础和使用详解,在这里插入图片描述,第40张

                  当再次创建hive外部表时:

                  四、Hive其他参考资料

                  Hive基础和使用详解,在这里插入图片描述,第41张

                  依然可以在命令行界面查询数据:

                  select * from bigdata.ods_sale_detail_external;

                  Hive基础和使用详解,在这里插入图片描述,第42张

                  Hive基础和使用详解,在这里插入图片描述,第43张

                  Hive基础和使用详解,在这里插入图片描述,第44张

                  Hive基础和使用详解,在这里插入图片描述,第45张

                  Hive基础和使用详解,在这里插入图片描述,第46张

                  Hive基础和使用详解,在这里插入图片描述,第47张

                  Hive基础和使用详解,在这里插入图片描述,第48张

                  Hive基础和使用详解,在这里插入图片描述,第49张

                  Hive基础和使用详解,在这里插入图片描述,第50张

网友评论

搜索
最新文章
热门文章
热门标签