推广

Hive 系列 – 架构和基本概念

iseeyu2年前 (2024-02-21)推广138

hive架构图.png

  1. 2用户接口:Client

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

  2. 数据:Metastore

    元数据包括:表名、表所属的数据库(默认是default)、表的拥有者、列/分区字段、表的类型(是否是外部表)、表的数据所在目录等;

    默认存储在自带的derby数据库中,推荐使用MySQL存储Metastore

  3. Hadoop

    使用HDFS进行存储,使用MapReduce进行计算。

  4. 驱动器:Driver

    (1)解析器(SQL Parser):将SQL字符串转换成抽象语法树AST,这一步一般都用第三方工具库完成,比如antlr;对AST进行语法分析,比如表是否存在、字段是否存在、SQL语义是否有误。

    (2)编译器(Physical Plan):将AST编译生成逻辑执行计划。

    (3)优化器(Query Optimizer):对逻辑执行计划进行优化。

    (4)执行器(Execution):把逻辑执行计划转换成可以运行的物理计划。对于Hive来说,就是MR/Spark。

Hive通过给用户提供的一系列交互接口,接收到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行返回的结果输出到用户交互接口。

2. HiveJDBC访问

2.1 启动hiveserver服务

 bin/hiveserver2

2.2 启动beeline

bin/beeline
Beeline version 1.2.1 by Apache Hive
beeline>

2.3 启动hiveserver2

beeline> !connect jdbc:hive2://hadoop102:10000(回车)
Connecting to jdbc:hive2://hadoop102:10000
Enter username for jdbc:hive2://hadoop102:10000: (直接回车)
Enter password for jdbc:hive2://hadoop102:10000: (直接回车)
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://hadoop102:10000> show databases;
+----------------+--+
| database_name  |
+----------------+--+
| default        |
| hive_db2       |
+----------------+--+

2.4 Hive常用交互命令

 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. “-e”不进入hive的交互窗口执行sql语句

    bin/hive -e "select id from student;"
    
  2. “-f”执行脚本中sql语句

    hive -f /opt/module/datas/hivef.sql  > /opt/module/datas/hive_result.txt
    

2.5 Hive其他命令操作

  1. 退出hive窗口:

    hive(default)>exit;
    hive(default)>quit;
    

    在新版的hive中没区别了,在以前的版本是有的:

    exit:先隐性提交数据,再退出;

    quit:不提交数据,退出;

  1. 在hive cli命令窗口中如何查看hdfs文件系统

    hive(default)>dfs -ls /;
    
  2. 在hive cli命令窗口中如何查看本地文件系统

    hive(default)>! ls /opt/module/datas;
    
  3. 查看在hive中输入的所有历史命令

    (1)进入到当前用户的根目录

    (2)查看. hivehistory文件

    cat .hivehistory
    

2.6 参数配置方式

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

    hive>set;
    
  2. 参数的配置三种方式

    (1) 配置文件方式 hive-site.xml

    注意:用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。配置文件的设定对本机启动的所有Hive进程都有效。

    (2) 命令行参数方式

    启动Hive时,可以在命令行添加-hiveconf param=value来设定参数。

    例如:

    bin/hive -hiveconf mapred.reduce.tasks=10;
    

    (3)参数声明方式

    可以在HQL中使用SET关键字查看参数设置和设定参数

    hive (default)> set mapred.reduce.tasks;
    
    hive (default)> set mapred.reduce.tasks=100;
    

3. Hive数据类型

3.1 基本数据类型

Hive数据类型 Java数据类型 长度 例子
TINYINT byte 1byte有符号整数 20
SMALINT short 2byte有符号整数 20
INT int 4byte有符号整数 20
BIGINT long 8byte有符号整数 20
BOOLEAN boolean 布尔类型,true或者false TRUE FALSE
FLOAT float 单精度浮点数 3.14159
DOUBLE double 双精度浮点数 3.14159
STRING string 字符系列。可以指定字符集。可以使用单引号或者双引号。 ‘now is the time’ “for all good men”
TIMESTAMP 时间类型
BINARY 字节数组

3.2 集合数据类型

数据类型 描述 语法示例
STRUCT 和c语言中的struct类似,都可以通过“点”符号访问元素内容。例如,如果某个列的数据类型是STRUCT{first STRING, last STRING},那么第1个元素可以通过字段.first来引用。 struct()
MAP MAP是一组键-值对元组集合,使用数组表示法可以访问数据。例如,如果某个列的数据类型是MAP,其中键->值对是’first’->’John’和’last’->’Doe’,那么可以通过字段名[‘last’]获取最后一个元素 map()
ARRAY 数组是一组具有相同类型和名称的变量的集合。这些变量称为数组的元素,每个数组元素都有一个编号,编号从零开始。例如,数组值为[‘John’, ‘Doe’],那么第2个元素可以通过数组名[1]进行引用。 Array()

建表的字段解释

row format delimited fields terminated by ','  -- 列分隔符
collection items terminated by '_'      --MAP STRUCT 和 ARRAY 的分隔符(数据分割符号)
map keys terminated by ':'              -- MAP中的key与value的分隔符
lines terminated by '\n';                   -- 行分隔符

3.3 类型转化

Hive的原子数据类型是可以进行隐式转换的,类似于Java的类型转换,例如某表达式使用INT类型,TINYINT会自动转换为INT类型,但是Hive不会进行反向转化,例如,某表达式使用TINYINT类型,INT不会自动转换为TINYINT类型,它会返回错误,除非使用CAST操作。

  1. 隐式类型转换规则如下

    (1)任何整数类型都可以隐式地转换为一个范围更广的类型,如TINYINT可以转换成INT,INT可以转换成BIGINT。

    (2)所有整数类型、FLOAT和STRING类型都可以隐式地转换成DOUBLE。

    (3)TINYINT、SMALLINT、INT都可以转换为FLOAT。

    (4)BOOLEAN类型不可以转换为任何其它的类型。

  2. 可以使用CAST操作显示进行数据类型转换

    例如CAST(‘1′ AS INT)将把字符串’1’ 转换成整数1;如果强制类型转换失败,如执行CAST(‘X’ AS INT),表达式返回空值 NULL。

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/57155.html

相关文章

Flutter 爬坑杂记

Flutter 爬坑杂记

DiagnosticableMixin.png 修改为: Diagnosticable.png Error: Type ‘DiagnosticableMixin’ not found. class DateTimePickerTheme with Diagnostica...

我来教你全网营销推广该如何精细化营运模式。

我来教你全网营销推广该如何精细化营运模式。

全网整合营销也简称全网营销,而现今的营销当中,全网营销推广更是不少企业者和经销商所烦恼的问题。全网推广营销无意识一个大、空、广的范畴,而如何实现细化,把每一项的措施都落实到实处,这也是我们必须要解决的问题。 由市场可看,目前的全网营销推广已经进入长足发展阶段,对于一些中小型企业来说,更是...

想做SEO需要学会哪些基础技能。

想做SEO需要学会哪些基础技能。

SEO优化也称为SEO搜索引擎优化。搜索引擎优化是利用搜索引擎的搜索规则来提高网站在相关搜索引擎中的自然排名。SEO的目的是通过优化使网站获得良好的排名,从搜索引擎中获得更多的流量,达到品牌曝光和收益的效果。 1、准确识别竞争对手,吸取精华。现在市场竞争非常激烈,产品质量稍有不同,都是服务和功能。...

拼多多买的VIP会员有用吗?揭秘你不知道的购物小窍门!

拼多多买的VIP会员有用吗?揭秘你不知道的购物小窍门!

随着互联网的发展,电商平台如雨后春笋般涌现,给我们的生活带来了极大的便利。其中,拼多多作为后起之秀,更是凭借其独特的团购模式和低价策略,吸引了大量的用户。那么,拼多多买的 VIP 会员有用吗?今天,我就来给大家揭秘一下这个话题,帮你购物更省钱! 我们要明确,拼多多的 VIP 会员制度...

千万级短视频项目运营操盘手手把手授课!小白学员即学即用

千万级短视频项目运营操盘手手把手授课!小白学员即学即用

随着新媒体的兴起,短视频逐步在产业发展新格局中占据重要地位,短视频+电商已经成为互联网带货的一种全新模式。短视频带货怎么做,如何进行合理的视频规划?短视频究竟怎么拍?今日,京津冀(保定首衡)电商培训三期第6天,鸿语传媒有限公司总经理、抖音资深讲师、千万级短视频运营操盘手——...

互联网时代流量就是金钱 引流方式千千万引流逻辑是关键。

互联网时代流量就是金钱 引流方式千千万引流逻辑是关键。

流量就是金钱,这句话每个接触互联网的人哪怕是不知道,但是也应该是有所感觉,每一个在网上疯狂获取流量的人,脑袋里面都有一个公式:流量=用户=金钱。 今天我们就来说一说引流的一些方式,还有引流的底层逻辑,了解逻辑才是最重要的,这代表你在任何平台都能找到你想要的流量。 一、引流方...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片