实验室基础Hive学习

一、Hive的概念介绍(相当于Hadoop的客户端)

        1> Hive处理的数据存储在HDFS中

        2>Hive分析数据的底层是MR(在安装完Hive的时候它底层已经完成了对应SQL语句和MR编程的对应关系的模板的写入,将所有MR模板封装在Hive中),而当客户端输入的SQL语句时,就会根据这些模板来进行对应地翻译成MR程序,并打成jar包,在YARN上运行

        3>执行在YARN上

        本质:将HQL转化成MR程序

二、Hive数据查询

        在Hive中的数据查询是基于HDFS的,而默认的处理HDFS的目录我是在/user/hive/warehous e里面的。因此,在hive中查询数据需要两个关键组成部分:元数据,HDFS是否有数据;

        元数据,就是描述数据的数据,存储包括表的各种属性等数据;

        HDFS中的数据,就是Hive根据对应的表的信息去HDFS的默认处理路径对指定目录(即表名)进行对应的SQL操作。

        总而言之,在Hive中查询数据,查询的表就对应HDFS默认路径下的目录SQL语句处理的数据就是对应目录下的所有文件(相当于将SQL语句翻译成MR程序对HDFS中的文件进行一定的操作)。并且当db表迁移到mysql数据库中,就可以允许多个客户端同时访问hive

三、Hive的其他交互方式(不进入hive交互页面执行sql,适用于脚本封装命令)

        ①hive -e "sql语句"-------执行完后输出结果退回命令行

         ②hive -f 文件路径---------执行文件内的sql语句输出结果后退回命令行

         ③在hive交互页面中,使用dfs -ls 目录 可以直接查看HDFS中的目录信息

linux小知识:cd -  可以回到上一次的目录

四、Hive的参数配置

        1、在hive交互页面中直接使用set;可以直接查看所有配置信息(包括hadoop的)

         2、参数配置的三种方式

                Ⅰ配置文件方式

                    默认配置文件:hive-default.xml

                    用户自定义配置文件:hive-site.xml

                     用户自定义配置会直接覆盖默认配置,并且hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端来启动的,Hive的配置会覆盖掉Hadoop的配置

                Ⅱ 命令行参数方式(仅对本次启动的hive有效)---用于脚本封装(与之前的交互方式交替使用)

                        hive -hiveconf key=value(key是要修改的参数名,value是目标参数值)

                Ⅲ 参数声明形式

                        在HQL中直接set key=value

⭐关于在hive交互界面使用count(*)显示出来的数据数量与实际用select语句显示出来的不同

        之前的实验是将数据put进HDFS,再用HQL语句进行筛选,但是count(*)是走元数据库,并不是通过HDFS;因此,使用count(*)显示出来的只能是修改了元数据库的语句(insert),而不能针对HDFS的修改进行改变数值

五、HIve的数据类型

        与java基础数据类型的对比:

         hive中独有的复杂数据类型:

        STRUCT: 类似于Java中的Bean

        MAP:键值对

        ARRAY:类似于Java中的列表 

        而不同复杂数据类型之间允许任意层次的嵌套

        实例:

在hive中抽象的表如下图所示:

{
"name": "songsong",
"friends": ["bingbing" , "lili"] , // 列表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值