Hadoop day05(数据仓库+ hive-DDL操作)

本文介绍了数据仓库的基本概念,包括其目的、特征以及与OLTP系统的区别。接着,详细阐述了ApacheHive,它是建立在Hadoop上的数据仓库工具,提供了类似SQL的查询语言HQL,简化了大数据分析。文章还提及了Hive的架构、元数据管理和安装部署步骤,并讨论了HiveSQL的DDL操作,如建库和建表。
摘要由CSDN通过智能技术生成

一、数据仓库

1、数据仓库基本概念

概念:data Warehouse 简称数仓,DW,是一个用于存储、分析、报告的数据系统。目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持(decision support)。本身不“生产”数据、不需要“消费”数据。

为何而来:分析数据,为了更好的进行各种规模的数据分析,同时不影响OLTP系统运行

1)联机事务处理系统:

前台接收的用户数据可以立即传送到后台进行处理,并在很短时间内给出处理结果。(典型应用:关系型数据库-Mysql、SQL Server等,数据仓库也是),核心:面向业务,支持业务、支持事务,所有业务操作分读写两种,读的压力>写的压力

使用OLTP需要注意的:数据分析过程也会对数据进行读写操作,会让读取压力倍增

                                      OLTP仅存储数周或数月的数据 

                                       数据分散在不同系统不同表中,字段类型属性不统一

2)数据仓库的 主要特征

面向主题:主题是一个抽象的概念,是较高层次上数据综合、归类并进行分析利用的抽象(数据分析干啥,比如公司可能需要分析哪个商品更受欢迎之类的)

集成性:主题相关的数据通常会分布在多个操作型系统中,彼此分散、独立、异构。需要集成到数仓主题下。需要把数据调整为单位归一等一致的数据。ETL:抽取、转换、加载=extract-transport-load

非易失性:也叫非易变性。数据仓库是分析数据的平台,而不是创造数据的平台。(数据进入数据仓库后,稳定且不会改变,数据反映的是一段相当长的时间内历史数据的内容,数据仓库中一般有大量的查询操作,但删除和修改操作很少

时变性:数据仓库的数据需要随着时间更新,以适应决策的需要。是一个项目,更是一个过程。数据仓库包含各种粒度的历史数据。

3)数据仓库的主流语言

   每一款编程语言只要具备读写数据、处理数据的能力,都可以用于数仓的开发。关键在于编程语言是否易学、好用、功能强大

4)SQL语言介绍:

    结构化查询语言简称sql,用于数据库查询和程序设计语言,用于存取数据以及查询、更新和管理数据。

   结构化数据:由二维表结构来逻辑表达和实现的数据严格地遵循数据格式与长度规范,主要通过关系型数据库进行存储和管理

   非结构化数据:相对的是不适于由数据库二维表来表现的非结构化数据,包含所有格式的办公文档、xml、HTML、各类报表、图片和音频、视频信息等。

5)SQl语言分类

2、apache hive入门

概念:hive是建立在Hadoop之上的开源数据仓库软件。可以将存储在Hadoop文件中的结构化、半结构化数据文件映射为一张数据库表,基于表提供了一种类似SQL的查询模型,称为Hive查询语言(HQL),用于访问和分析存储在Hadoop文件中的大型数据集。

核心:HQL转换为MapReduce程序,然后将程序提交到Hadoop集群执行

         Hive由Facebook实现并开源。

为什么使用:学习成本高,实现复杂逻辑时开发难度大

优点:操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手

           避免直接写MapReduce,减少开发人员的学习成本

           支持自定义函数,功能扩展很方便

            背靠Hadoop,擅长存储分析海量数据集

hive和Hadoop关系:Hive利用HDFS存储数据,利用MapReduce查询分析数据,

hive中能够写sql处理的前提是针对表而不是针对文件,因此需要将文件和表之间的对应关系描述记录清楚映射信息专业的叫法称之为元数据信息

1)sql语法解析、编译: 

用户写完sql-hive对sql语法校验-根据元数据信息解读sql背后的含义-制定计划-转换MapReduce程序-执行结果封装-返回用户 

hive中映射:文件和表之间的对应关系

hive担任的功能职责:sql语法解析编译成为MapReduce

 

2)hive架构和组件

组件:

用户接口:CLI-shell命令行、JDBC/ODBC、WebGUI-浏览器访问hive   (用户通过写sql去使用hive)

元数据存储:通常是存储在关系数据库如mysql/derby中。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等

Driver驱动程序,包括语法解析器、计划编译器、优化器、执行器:完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后有执行引擎调用执行。

执行引擎:Hive本身不直接处理数据文件。而是通过执行引擎处理。当下Hive支持MapReduce、Tez、Spark3种执行引擎。(MR比较慢)

(hive完整架构图)

 

hive中管理元数据的叫MetaStore:元数据服务。对外暴露服务地址,让各种客户端通过连接Metasore服务,由metastore再去连接mysql数据库来存取元数据。(用户不需要sql密码啥的)

        metastore配置方法:

 

3、Apache HIve 安装部署

前提Hadoop安装好,能正常运行

    1)需要在core.xml文件中整合

(也就是告知Hadoop,我在你们家住了)

   2)安装MySQL

(windows上的和Linux无关,这里是指在Linux上安装)【基本还是windows上下载对应的软件包,然后通过中间软件传到Linux,再解压安装】

 

 

 可能需要安装插件

     初始化MySQL:

 (复制密码时 不要复制空格)

ctrl+d结束MySQL服务

删除则百度嗷

          3 )配置文件

         (挑一台安装即可,因为它底层是Hadoop)

 

 (site-xml文件内容百度,里面关于Hadoop、MySQL等密码,需要细心)

验证是否安装好

     查看MySQL中创建的74张表

     方法:虚拟机里面:使用 mysql -u root -p   密码   ;  Hadoop进去之后输入:use hive; 切换数据库;输入show tables即可。

    4)启动metastore服务

         放前台开启:会一直开启,有必要可以ctrl+c关闭该服务。

 

     放后台开启:nohup 空格 前台命令 &

       后台启动后的运行位置:

 

      jps检验,成功会多一个RunJar(结束进程则jps找到进程号,使用kill -9即可结束)

          hive自带客户端

              bin/hive、bin/beeline

 

                 bin/hive:第一代客户端,一是可用于交互或批处理模式运行hive查询;二十用于hive相关服务的启动,比如metastore服务

                 bin/beeline:是第二代客户端,是一个JDBC客户端,官方强烈推荐使用,性能更强,安全性提高。对接HiveServer2

                第二代的大概流程:beeline CTL- HiveServer2-Metastore-metadata

注意:先启动metastore,在启动hiveserver2服务(也分前台启动和后台启动)

              5)远程登录:

      是在node3上登录node1的,通过jdbc,需要知道登哪台和对应端口号(! connect jdbc:hive2://node1:10000)

      成功连接上:

图形化操作的时候,一定要记得打开hive服务

二、、Hive SQL语言:DDL建库、建表

1、建库

    SQL中DDL(数据定义语言data definition language)语法的作用:对数据库内部的对象结构进行创建,删除,修改等的操作语言,这些数据库对象包括database、table等。

     DDL核心语法由create、alter与drop三个所组成。DDL并不涉及表内部数据的操作

     默认的数据库叫做default,存储数据位置位于HDFS(Web UI)的/usr/hive/warehouse下,用户创建的数据库再/user/hive/warehouse/database_name.db下。

    创建数据库:create database;

    切换数据库:use database;

    删除数据库:drop database;(前提是该数据库中没有表,是空的)

    强制删除数据库:drop database cascade;(不管里面有没有表)

2、表和建表

表:标识(表名)+字段(列)+记录(行)+分隔符

1)数据类型:

       原生数据类型:

       复杂数据类型

     最常用的数据类型是字符串String和数字类型Int

2)分隔符:

     ROW FORMAT DELIMITED语法用于指定字段之间等相关的分隔符,这样Hive才能正确的读取解析数据。或者说只有分隔符指定正确,解析数据成功,我们才能在表中看到数据。

     语法:

     LazySimpleSerDe是hive默认的,包含4中子语法,分别用于指定字段之间、集合元素之间、map映射 kv之间、换行的分割符号。需要根据情况灵活使用(没有写则默认使用”\001“作为分隔符,vim编辑器下可以c+v/c+a即可输入“\001",显示A(Ascll码),分隔符不正确数据不会映射出来)

 

ROW FORMAT DELIMATED

       [FIELDS TERMINATED BY char]                          字段之间分隔符

       [COLLECTION ITEMS TERMINATED BY char]    集合元素之间分隔符

       [MAP KEYS TERMINATED BY char]                     Map映射kv之间分隔符

       [LINES TERMINATED BY char]                             行数据之间分隔符

 然后将具体数据(这样可以避免使用insert一个一个添加)上传到对应HDFS中(WebUI 上传,还暂时没学load)

注意comment中的注释可能会导致查看的时候是乱码,需要在hadoop中,打开MySQL服务,找到存储的数据库(打开MySQL服务-查库),进入对应数据库:执行一下语句,并把表删除重建即可。

 

 3)常用show语句:

       显示所有数据库

           show databases;

           或 show  schemas;

       显示当前数据库所有表

           use database_name;

           show tables;

           或者  SHOW TABLES [IN database_name];指定某个数据库

       查询显示一张表的元数据信息

         desc formatted table-name;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值