版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
大数据存储技术与应用案例所有教学资源,我们给;所有复杂操作,我们做;图书附赠,永久免费,只为老师用书更方便课件教案微课扫码题库建课互评考试平台
学习工具0102030405申请签到功能建课、建班(无需操作,技术专员负责搭建)系统自动记录考勤分创建签到学生扫码签到扫码申请免费开通签到功能→动态二维码,防作弊
考勤记录自动统计,汇入学生总成绩课堂签到项目一大数据存储入门项目三列式数据库HBase项目二数据仓库Hive项目四文档数据库MongoDB项目五图数据库Neo4j项目六键值数据库Redis项目七NewSQL数据库CockroachDB数据仓库Hive项目二任务一采用远程模式部署Hive任务二构建网站流量数据仓库任务三操作网站流量数据在数据仓库在整合数据、提高数据质量、支持实时决策和实现业务分析等方面发挥着重要作用。Hive是一个基于Hadoop生态系统的数据仓库工具,它能够有效处理大规模数据集,常用于构建数据仓库、处理和分析数据等。本项目将介绍数据仓库和Hive的相关知识,采用远程模式部署Hive,构建网站流量数据仓库,操作网站流量数据。项目导读项目目标熟悉数据仓库的特点、应用场景和分层架构。熟悉Hive的架构、存储结构和表的存储格式。掌握Hive中数据库和表的基本操作。掌握Hive中导入数据、查询数据和导出数据的基本操作。能采用远程模式部署Hive。能根据业务需求合理设计并构建数据仓库。能有效操作业务中的数据,包括向数据仓库导入数据、查询数据和导出数据等。增强遵守规则的意识,养成按规矩行事的习惯。学习共享精神,实现资源的共同利用,从而推动社会的共同进步和繁荣。采用远程模式部署Hive任务一Hive支持3种部署模式,分别为内嵌模式、本地模式和远程模式。在实际开发中,通常采用远程模式部署Hive。采用这种模式部署Hive时,需要配置Hive的服务端和客户端。服务端通常将元数据存储在MySQL数据库中,并通过HiveServer2服务管理元数据、处理来自客户端的用户请求、执行查询并返回结果。客户端通过Beeline工具与Hive服务端进行交互,允许用户编写并提交查询语句到服务端执行。采用远程模式部署Hive之前,我们先来学习一下数据仓库的特点、应用场景和分层架构,以及Hive的架构、存储结构和表的存储格式。任务准备问题1:简述Hive和关系型数据库中数据类型的异同。全班学生以3~5人为一组,各组选出组长。组长组织组员扫码观看“Hive和关系型数据库的异同”视频,讨论并回答下列问题。问题2:简述Hive和关系型数据库中表存储格式的异同。Hive和关系型数据库的异同一、数据仓库概述定义:数据仓库是企业决策支持系统中不可或缺的一部分,它为企业提供了一个集中管理数据的平台,用于存储历史数据、进行复杂的查询和分析,从而帮助企业做出更明智的商业决策。特征(1)主题性(2)集成性(3)稳定性(4)历史性1、数据仓库的特点特征(1)主题性(2)集成性(3)稳定性(4)历史性数据仓库是针对企业的某个特定主题或问题而设计的,其中的数据是按照主题进行组织和存储的。主题是一个抽象概念,每个主题通常对应一个或多个表,这些表包含与主题相关的数据。一、数据仓库概述一、数据仓库概述特征(1)主题性(2)集成性(3)稳定性(4)历史性数据仓库可以从多个数据源中获取数据,并将数据集成到一个统一的数据模型中,以确保数据的一致性和准确性。1、数据仓库的特点一、数据仓库概述特征(1)主题性(2)集成性(3)稳定性(4)历史性数据仓库中的数据一般以只读格式保存,不可以修改,以确保数据的完整性和稳定性。例如,在电信公司的数据仓库存储了用户的通话记录。这些通话记录在存入数据仓库后,一般不会被删除或修改。当需要分析用户在过去几个月或几年的通话行为变化时,能够保证数据的原始性和完整性,确保分析结果是基于稳定的数据得到的。1、数据仓库的特点一、数据仓库概述特征(1)主题性(2)集成性(3)稳定性(4)历史性数据仓库中的数据通常包含历史信息,可以对企业的发展历程和未来趋势做出定量分析和预测。例如,银行的数据仓库会记录客户账户余额的变化情况。每个月都会有新的账户交易数据添加到数据仓库中,并且历史的账户余额数据和交易记录都会被保存。这样可以分析客户在不同时间段的资金流动情况,比如分析某个客户过去一年的储蓄趋势或者消费模式的变化。1、数据仓库的特点一、数据仓库概述2、数据仓库的应用场景一、数据仓库概述定义:数据仓库分层是一种用于管理数据仓库的方法,它能将数据仓库划分为多个逻辑层次。每个层次都有特定的功能和作用,不同层次的数据具有不同的组织、存储和管理方式。数据应用层数据仓库层源数据层3、数据仓库分层架构一、数据仓库概述源数据层源数据层又称ODS(operationdatastore)层,主要用于保存原始数据,完成数据积存。源数据层通常采用ETL工具为数据仓库提供数据,使源数据和数据仓库之间保持数据同步。该层的数据通常保存在磁盘中,即使计算机突然停机或崩溃,数据也不会丢失。一、数据仓库概述源数据层源数据层又称ODS(operationdatastore)层,主要用于保存原始数据,完成数据积存。源数据层通常采用ETL工具为数据仓库提供数据,使源数据和数据仓库之间保持数据同步。该层的数据通常保存在磁盘中,即使计算机突然停机或崩溃,数据也不会丢失。高手点拔ETL(extract-transform-load)工具是用于提取、转换和加载数据的软件工具。ETL工具能够从各种数据源中提取数据;然后转换和整理提取到的数据;最后将数据加载到目标数据仓库或数据分析平台。提问:ETL的作用是什么?一、数据仓库概述数据仓库层数据仓库层又称DW(datawarehouse)层,存储的数据是对源数据层中数据的轻度汇总,即按照一定的主题汇总的数据。数据仓库层可以继续划分为明细(datawarehousedetail,DWD)层、中间(datawarehousemiddle,DWM)层和业务(datawarehouseservice,DWS)层。一、数据仓库概述数据仓库层数据仓库层又称DW(datawarehouse)层,存储的数据是对源数据层中数据的轻度汇总,即按照一定的主题汇总的数据。数据仓库层可以继续划分为明细(datawarehousedetail,DWD)层、中间(datawarehousemiddle,DWM)层和业务(datawarehouseservice,DWS)层。一、数据仓库概述数据仓库层数据仓库层又称DW(datawarehouse)层,存储的数据是对源数据层中数据的轻度汇总,即按照一定的主题汇总的数据。数据仓库层可以继续划分为明细(datawarehousedetail,DWD)层、中间(datawarehousemiddle,DWM)层和业务(datawarehouseservice,DWS)层。高手点拔①指标是用于分析、衡量和评估业务性能的度量值。在销售业务分析中,可以将指标设置为销售量、销售额、销售增长率等,以便从不同的角度分析业务数据。②粒度是指数据在数据仓库中的组织层次和细节程度。在销售业务分析中,可以对数据进行细粒度汇总,如日销售额;也可以对数据进行粗粒度汇总,如月销售额。③维度是对业务过程中的某方面进行描述的属性集合。在销售业务分析中,可以从时间、地点、产品和客户等维度描述订单。④维度建模法是数据仓库构建过程中常用的一种逻辑设计手段,它通过维度表和事实表设计数据模型。其中,事实表用于存储业务指标,维度表用于描述事实表的维度。在实际应用中,用户可以根据业务需求省略中间层,直接从明细层读取数据并计算宽表的指标,然后将宽表存放在业务层。一、数据仓库概述数据应用层数据应用层又称DA(dataapplication)层,用于为数据挖掘、数据可视化、数据分析等实际业务场景提供数据。数据应用层的数据通常来源于数据仓库层。二、Hive的架构定义:Hive是开源的数据仓库工具,它提供了一种类似于SQL(structuredquerylanguage)的查询语言(HiveQL),用于管理和查询大规模数据。Hive使用MapReduce实现分布式计算Hive使用HDFS存储数据用户接口Thrift服务驱动器元数据库二、Hive的架构用户接口Hive提供了CLI、编程接口(如JDBC、ODBC)和Web接口等用户接口。通过用户接口,用户可以执行查询数据、管理表和管理数据库等操作。CLI(commandlineinterface)是命令行界面,用户可以在该界面上输入命令或语句与计算机进行交互。JDBC(Javadatabaseconnectivity)和ODBC(opendatabaseconnectivity)是用于连接数据库和进行数据库交互的两种标准接口。通过这些标准接口,用户可以使用多种编程语言(如Java、Python、R等)访问Hive。高手点拔二、Hive的架构Thrift服务提供了访问服务允许用户使用不同的编程语言调用Hive接口。Thrift服务二、Hive的架构驱动器用于完成HiveQL语句的解析、编译、优化和MapReduce任务的生成。驱动器二、Hive的架构驱动器解析器将用户输入的HiveQL语句转换成抽象语法树(abstractsyntaxtree,AST)。解析器会进行语法检查、语义分析和转换操作,确保查询语句的正确性和合法性。编译器将抽象语法树转换成查询块,然后将查询块转换成逻辑执行计划。优化器对逻辑执行计划进行优化,提高查询的性能。执行器将优化后的逻辑执行计划转换成物理执行计划(一系列MapReduce任务)。二、Hive的架构元数据库中含有表名、字段名、字段的数据类型、分区、表的存储位置等信息。Hive的元数据可以存储在不同的数据库中,如MySQL数据库、Oracle数据库和Hive内置的Derby数据库等。元数据库三、Hive的存储结构数据库(database)是一个目录或命名空间,用于分类存储表。可以避免不同表之间的命名冲突,确保表名的唯一性。可以分类存储具有相关性的表,以便管理和查询数据。表(table)是存储和管理数据的基本结构。表名、表的存储位置、字段名、字段的数据类型等元数据存储在元数据库中。表中的实际数据存储在对应的HDFS目录中。分区(partition)在Hive中,可以根据一个或多个分区字段的值对表中数据进行分区存储,每个分区都对应一个子目录,每个分区的数据存储在相应的子目录中。桶(bucket)在Hive中,可以根据一个或多个分桶字段的哈希值将表中数据分别存储在固定数量的桶中。字段是指表中的一个列用于存储一种特定类型的数据。字段的数据类型包括基本数据类型和复杂数据类型。基本数据类型包括数值类型、日期/时间类型、字符串类型和布尔类型等;复杂数据类型包括数组(ARRAY)、映射(MAP)和结构体(STRUCT)。四、Hive表的存储格式在Hive中,常用的表存储格式包括TextFile、SequenceFile、ORC(optimizedrowcolumnar)和Parquet等。表存储格式描述存储方式适用场景TextFile以文本形式存储数据,每行数据都以换行符分隔。创建Hive表时,默认使用该存储格式存储表中数据行式存储适用于存储和处理简单的非结构化文本数据SequenceFile二进制文件格式,将键值对序列化后按顺序存储行式存储适用于顺序读写大规模数据ORC存储大规模数据的文件格式列式存储适用于存储和分析大规模数据。查询过程中访问少量字段时性能较好Parquet针对分析型系统的高性能文件格式列式存储适用于存储和分析大规模数据。执行并行查询、字段裁剪等操作时性能较好任务实施
任务分析
Hive的运行离不开Hadoop集群环境,因此本书在Hadoop完全分布式集群中采用远程模式部署Hive。采用远程模式部署Hive需要配置Hive的服务端和客户端,然后验证Hive是否配置成功。
实施步骤采用远程模式部署Hive任务实施
实施步骤1.配置Hive的服务端步骤1启动Worker1主机的浏览器,访问Hive的官方网站(),在首页中选择“Release”/“Release”选项;然后在打开的下载页面中单击“Downloadareleasenow!”链接文字;接着在打开的页面中单击“/hive/”链接文字;接着在打开的版本页面中单击“hive-3.1.3/”链接文字;最后在打开的下载页面中单击“apache-hive-3.1.3-bin.tar.gz”链接文字,下载Hive安装文件。本书将Worker1主机作为Hive的服务端,服务端需要安装Hive和MySQL,并配置MySQL保存Hive元数据。(1)安装Hive下载Hive安装文件任务实施步骤2[hadoop@Worker1~]$sudotar-zxf~/下载/apache-hive-3.1.3-bin.tar.gz-C/usr/local[hadoop@Worker1~]$sudomv/usr/local/apache-hive-3.1.3-bin//usr/local/hive[hadoop@Worker1~]$sudochown-Rhadoop/usr/local/hive启动Worker1主机的终端,执行如下命令,将Hive安装文件解压到“/usr/local”目录中;然后将“apache-hive-3.1.3-bin”目录重命名为“hive”;最后将该目录的所有权限赋予hadoop用户,使hadoop用户有权限访问和操作“hive”目录中的文件。任务实施执行如下命令,打开“.bashrc”配置文件;然后在文件首行添加如下配置信息,将Hive的可执行文件路径添加到系统的PATH环境变量中,以便在任意路径下使用Hive;最后保存并关闭配置文件。步骤3[hadoop@Worker1~]$sudovim~/.bashrc#配置信息exportHIVE_HOME=/usr/local/hiveexportPATH=$PATH:$HIVE_HOME/bin执行如下命令,使配置信息生效。[hadoop@Worker1~]$source~/.bashrc步骤4任务实施执行如下命令,复制Hive安装目录中自带的“hive-env.sh.template”配置文件,并将其重命名为“hive-env.sh”。步骤5[hadoop@Worker1~]$cd/usr/local/hive[hadoop@Worker1hive]$sudocp./conf/hive-env.sh.template
./conf/hive-env.sh执行如下命令,打开“hive-env.sh”配置文件;然后在文件首行添加如下配置信息,以便Hive与Hadoop进行交互;最后保存并关闭配置文件。步骤6[hadoop@Worker1hive]$sudovim./conf/hive-env.sh#配置信息exportHADOOP_HOME=/usr/local/hadoopexportHIVE_CONF_DIR=/usr/local/hive/conf任务实施(2)安装MySQL步骤1启动Worker1主机的浏览器,访问“/archives/c-j”,在打开的页面中选择产品版本、操作系统和操作系统版本;然后单击“Download”按钮,下载MySQL驱动程序文件。小提示MySQL驱动程序文件需要根据个人安装的虚拟机镜像文件进行选择。例如,本书安装的是RedHat8.7.0版本,则选择对应的操作系统RedHatEnterpriseLinux/OracleLinux和版本RedHatEnterpriseLinux8/OracleLinux8。下载MySQL驱动程序文件任务实施执行如下命令,将下载的MySQL驱动程序文件解压并安装到“~/下载”目录中。步骤2[hadoop@Worker1hive]$cd~/下载[hadoop@Worker1下载]$sudorpm2cpio~/下载/mysql-connector-j-8.0.33-1.el8.noarch.rpm|cpio-idmv步骤3
执行如下命令,安装MySQL服务器端。安装过程中根据提示信息输入“y”。[hadoop@Worker1下载]$sudoyuminstallmysql-server小提示如果使用yum命令安装MySQL服务器端时出现“没有被启用的仓库”错误,读者可以参考本书配套素材中的“前置环境的搭建”文档挂载光盘镜像即可。任务实施步骤4执行如下命令,启动MySQL并设置开机自动启动,确保系统重启后,MySQL服务可以自动启动,从而保证MySQL可以正常存储Hive元数据。设置过程中根据提示信息输入Worker1主机的密码。[hadoop@Worker1下载]$sudosystemctlstartmysqld #启动MySQL#设置开机自动启动[hadoop@Worker1下载]$sudosystemctlenablemysqld[hadoop@Worker1下载]$systemctldaemon-reload步骤5执行如下命令,查看MySQL的状态。若出现“active(running)”,则证明MySQL启动成功。[hadoop@Worker1下载]$systemctlstatusmysqld任务实施按“Ctrl+Shift+Z”组合键关闭状态信息;然后执行如下命令,打开MySQL的日志文件,查看MySQL的用户名和密码。步骤6[hadoop@Worker1下载]$sudocat/var/log/mysql/mysqld.log日志文件一般存放在“/var/log”目录中,在该目录中可以找到MySQL的日志文件(mysqld.log)。MySQL的日志文件中包含MySQL的用户名和密码等信息,从图2-7中可以看出MySQL的用户名为“root”,主机名为“localhost”,密码为空。高手点拔查看MySQL的用户名和密码任务实施执行如下命令,登录MySQL,出现“mysql>”命令提示符。步骤7[hadoop@Worker1下载]$mysql-hlocalhost-uroot步骤8执行如下语句,修改MySQL的登录密码;然后退出MySQL。mysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'123456';mysql>QUIT;登录MySQL任务实施[hadoop@Worker1下载]$mysql-uroot-p#切换至数据库mysql,该数据库中包含MySQL的用户及其权限信息mysql>USEmysql;#设置root用户可以从任何主机连接到MySQL数据库mysql>UPDATEuserSEThost="%"WHEREuser="root";mysql>FLUSHPRIVILEGES; #刷新MySQL的权限表,使权限更改立即生效mysql>EXIT; #退出MySQL步骤9执行如下命令和语句,登录MySQL;然后修改MySQL用户root的权限,允许该用户从任何主机上连接MySQL,以便Worker2主机远程登录MySQL;最后退出MySQL。任务实施(3)配置MySQL保存Hive元数据。步骤1执行如下命令,将解压的MySQL驱动程序文件复制到“/usr/local/hive/lib”目录中。[hadoop@Worker1下载]$cp~/下载/usr/share/java/mysql-connector-j.jar/usr/local/hive/lib#创建并打开配置文件[hadoop@Worker1下载]$
sudovim/usr/local/hive/conf/hive-site.xml#配置信息<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration><property><!--配置JDBC连接地址,并创建名为hive的数据库,用于存储元数据信息-->
<name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>步骤2执行如下命令,创建并打开“hive-site.xml”配置文件;然后在文件中添加如下配置信息,以便Hive与MySQL进行交互;最后保存并关闭配置文件。任务实施</property>
<property> <!--配置JDBC驱动--> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.cj.jdbc.Driver</value> </property> <property> <!--配置连接MySQL的用户名--> <name>javax.jdo.option.ConnectionUserName</name><value>root</value> </property> <property> <!--配置连接MySQL的密码--> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property></configuration>任务实施[hadoop@Worker1下载]$schematool-initSchema-dbTypemysql步骤3执行如下命令,初始化MySQL,保证Hive能够将元数据存储在MySQL中,并且能够访问和管理这些元数据。若出现“schemaToolcompleted”,则证明初始化成功。2.配置Hive的客户端步骤1在Worker2主机上安装Hive。本书将Worker2主机作为Hive的客户端,客户端只需要安装Hive。步骤2启动Worker2主机的终端,执行如下命令,新建并打开“hive-site.xml”配置文件;然后在文件中添加如下配置信息,配置Hive的元数据服务;最后保存并关闭配置文件。[hadoop@Worker2~]$sudovim/usr/local/hive/conf/hive-site.xml#配置信息<?xmlversion="1.0"encoding="UTF-8"standalone="no"?>任务实施<?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration> <property><!--指定Hive不开启本地模式,否则会默认使用本地元数据服务-->
<name>hive.metastore.local</name>
<value>false</value> </property> <property>
<!--配置元数据服务地址,Worker1即为服务端的主机名-->
<name>hive.metastore.uris</name><value>thrift://Worker1:9083</value> </property></configuration>任务实施3.验证Hive是否部署成功验证Hive是否部署成功,首先需要在Worker1主机上启动HiveServer2服务;然后在Worker2主机上启动Beeline工具远程连接Worker1主机的HiveServer2服务。[hadoop@Master~]$cd/usr/local/hadoop/etc/hadoop[hadoop@Masterhadoop]$geditcore-site.xml#配置信息<property> <name>xyuser.hadoop.hosts</name> <value>*</value></property><property> <name>xyuser.hadoop.groups</name> <value>*</value></property>步骤1在Master主机上执行如下命令,打开“core-site.xml”配置文件;然后在<configuration></configuration>标签中添加如下配置信息,设置所有用户可以代理hadoop用户,保证代理用户能够以hadoop用户的身份执行相关操作;最后保存并关闭配置文件。任务实施步骤2使用同样方法,在Worker1和Worker2主机的“core-site.xml”配置文件中添加配置信息,设置所有用户可以代理hadoop用户。步骤3在Master主机上执行如下命令,启动HDFS和YARN。后续操作中,Worker2主机需要远程访问Worker1主机,因此要设置用户的访问权限,允许Worker2主机访问Worker1主机,并能够以hadoop用户的身份执行相关操作。实际操作中,读者只需要根据自己的用户名修改xyuser.<用户名>.hosts和xyuser.<用户名>.groups中的<用户名>。高手点拔[hadoop@Masterhadoop]$start-dfs.sh[hadoop@Masterhadoop]$start-yarn.sh小提示如果HDFS处于启动状态,则应该先执行“stop-dfs.sh”命令关闭HDFS,再重新启动HDFS和YARN。任务实施步骤4在Worker1主机上执行如下命令,启动HiveServer2服务。[hadoop@Worker1hadoop]$hiveserver2按“Ctrl+Shift+Z”组合键可以关闭HiveServer2服务。高手点拔步骤5在Worker1主机上启动一个新的终端,执行如下命令,查看进程。若显示的进程中含有RunJar,则证明HiveServer2服务启动成功。
[hadoop@Worker1~]$jps启动的进程任务实施步骤6在Worker2主机上执行如下命令,启动Beeline工具远程连接Worker1主机的HiveServer2服务。连接HiveServer2服务时,需要输入Worker1主机hadoop用户的登录密码,输入密码后出现“0:jdbc:hive2://Worker1:10000/>”提示符,则证明远程连接成功,。[hadoop@Worker2hadoop]$beeline--hiveconfhive.server2.logging.
operation.level=NONE-ujdbc:hive2://Worker1:10000-nhadoop-p远程连接HiveServer2服务成功的界面任务实施步骤6在Worker2主机上执行如下命令,启动Beeline工具远程连接Worker1主机的HiveServer2服务。连接HiveServer2服务时,需要输入Worker1主机hadoop用户的登录密码,输入密码后出现“0:jdbc:hive2://Worker1:10000/>”提示符,则证明远程连接成功,。启动Beeline工具的同时连接到指定的HiveServer2服务,命令格式如下。beeline-ujdbc:hive2://<host>:<port>-n<username>-p<password>其中,<host>为HiveServer2服务所在主机的主机名或IP地址;<port>为HiveServer2服务的端口号;-n<username>用于指定HiveServer2服务所在主机的用户名;-p<password>用于指定用户名对应的密码。此外,在启动Beeline工具时可以添加“--hiveconfhive.server2.logging.operation.level
=NONE”属性,将日志级别设置为NONE,不显示任何与操作相关的日志信息,以便用户查看操作结果。高手点拔步骤7在Worker2主机上执行如下命令,断开远程连接。0:jdbc:hive2://Worker1:10000/>!quit构建网站流量数据仓库任务二现有用户手机信息数据文件“phone.txt”和用户上网日志记录数据文件“http.log”。“phone.txt”数据文件包含手机号码前缀(phone_no)、手机号码段(phone_numpart)、省份(province)、城市(city)、运营商(operator)、邮政编码(zipcode)、区号(areacode)和行政划分代码(administrativecode)8个字段的信息,。其中,各字段间的分隔符是由Tab键输入的制表符。“http.log”数据文件中包含手机号码段(phone_numpart)、请求网站的链接(web)、上行流量(upstream)和下行流量(downstream)4个字段的信息,。其中,各字段间的分隔符是由Tab键输入的制表符。为了方便日后查询和分析不同用户和网站的流量数据,需要将这些数据存储到网站流量数据仓库中。为了合理构建网站流量数据仓库,我们需要先对数据仓库进行分层设计,然后分别创建数据库和表。构建网站流量数据仓库之前,我们先来学习一下Hive中数据库和表的基本操作。“phone.txt”数据文件的部分内容“http.log”数据文件的部分内容任务准备问题1:简述Hive数据定义的概念。全班学生以3~5人为一组进行分组,各组选出组长。组长组织组员扫码观看“Hive数据定义概述”视频,讨论并回答下列问题。问题2:简述Hive中表的类型。Hive数据定义概述一、数据库的基本操作创建数据库显示数据库查看数据库的基本信息切换数据库删除数据库一、数据库的基本操作使用CREATEDATABASE关键字可以创建数据库,其语法格式如下。CREATEDATABASE[IFNOTEXISTS]数据库名[LOCATION'存储路径'];上述语法格式的详细解释如下。IFNOTEXISTS:可选项,用于判断创建的数据库是否已经存在。若数据库不存在,则创建数据库;否则不执行任何操作。LOCATION'存储路径':可选项,用于指定数据库在HDFS中的存储位置。默认存储位置取决于Hive的“hive-site.xml”配置文件中hive.metastore.warehouse.dir参数指定的存储位置。1、创建数据库如果在“hive-site.xml”配置文件中没有设置hive.metastore.warehouse.dir参数的值,则使用该参数的默认值“/user/hive/warehouse”。高手点拔一、数据库的基本操作使用SHOWDATABASES关键字可以显示数据库,其语法格式如下。SHOWDATABASES[LIKE筛选条件]; #显示所有数据库/符合条件的数据库“LIKE筛选条件”为可选项,用于筛选符合条件的数据库;LIKE为模糊查询的关键字。2、显示数据库数据库的基本信息包含数据库名称、描述信息、存储位置、所有者和权限。使用DESCRIBEDATABASE关键字可以查看数据库的基本信息,其语法格式如下。DESCRIBEDATABASE数据库名;3、查看数据库的基本信息一、数据库的基本操作在Hive中,默认使用的数据库为default。如果需要使用已创建的其他数据库,则需要手动切换。使用USE关键字可以切换数据库,其语法格式如下。4、切换数据库用户可以执行如下语句查询当前使用的数据库。SELECTCURRENT_DATABASE();高手点拔USE数据库名;一、数据库的基本操作上述语法格式的详细解释如下。IFEXISTS:可选项,用于判断数据库是否存在。若数据库存在,则删除数据库;否则不执行任何操作。RESTRICT|CASCADE:可选项,用于指定数据库中存有表时是否可以删除数据库。其中,RESTRICT为默认值,表示如果数据库中存有表,则无法删除数据库;CASCADE表示如果数据库中存有表,则删除数据库并删除数据库中的表。使用DROPDATABASE关键字可以删除指定数据库,其语法格式如下。DROPDATABASE[IFEXISTS]数据库名[RESTRICT|CASCADE];5、删除数据库一、数据库的基本操作例2-1步骤10:jdbc:hive2://Worker1:10000/>CREATEDATABASEhive_test;
操作数据库hive_test。执行如下语句,创建数据库hive_test。小提示在创建数据库之前,需要启动HDFS和YARN,并确保Worker2主机的Beeline工具成功连接到Worker1主机的HiveServer2服务。为了排版整洁,后续将提示符“0:jdbc:hive2://Worker1:10000/>”简写为“…/>”。一、数据库的基本操作步骤2…/>SHOWDATABASES;执行如下语句,显示数据库。步骤3…/>USEhive_test;…/>SELECTCURRENT_DATABASE();执行如下语句,切换数据库,并查询当前使用的数据库。当前使用的数据库
显示数据库一、数据库的基本操作步骤4…/>DESCRIBEDATABASEhive_test; 执行如下语句,查看数据库hive_test的基本信息。步骤5…/>DROPDATABASEIFEXISTShive_test;执行如下语句,删除数据库hive_test。在Hive中,默认情况下关键字不区分大小写。高手点拔数据库hive_test的基本信息二、表的基本操作创建表显示表查看表信息修改表分区表的分区操作删除表二、表的基本操作使用CREATETABLE关键字可以创建以下表,其语法格式如下。内部表外部表分区表桶表CREATE[EXTERNAL]TABLE[IFNOTEXISTS][数据库名.]表名(字段名1数据类型[COMMENT字段描述],…)[PARTITIONEDBY(字段名1数据类型,…)][CLUSTEREDBY(字段名1,
…)[SORTEDBY(字段名1[ASC|DESC],…)]INTO分桶数BUCKETS][ROWFORMATDELIMITED数据分隔符][STOREDAS存储格式][LOCATION'存储路径'];1、创建表上述语法格式的详细解释如下。CREATE[EXTERNAL]TABLE:创建表的关键字。其中,EXTERNAL为可选关键字,表示创建的表为外部表。二、表的基本操作使用CREATETABLE关键字可以创建以下表,其语法格式如下。内部表外部表分区表桶表CREATE[EXTERNAL]TABLE[IFNOTEXISTS][数据库名.]表名(字段名1数据类型[COMMENT字段描述],…)[PARTITIONEDBY(字段名1数据类型,…)][CLUSTEREDBY(字段名1,
…)[SORTEDBY(字段名1[ASC|DESC],…)]INTO分桶数BUCKETS][ROWFORMATDELIMITED数据分隔符][STOREDAS存储格式][LOCATION'存储路径'];1、创建表[数据库名.]表名:用于指定表名和存放表的数据库。若不指定数据库,则表默认存放在当前使用的数据库中。PARTITIONEDBY(字段名1数据类型,…):可选项,用于指定分区字段。二、表的基本操作使用CREATETABLE关键字可以创建以下表,其语法格式如下。内部表外部表分区表桶表CREATE[EXTERNAL]TABLE[IFNOTEXISTS][数据库名.]表名(字段名1数据类型[COMMENT字段描述],…)[PARTITIONEDBY(字段名1数据类型,…)][CLUSTEREDBY(字段名1,
…)[SORTEDBY(字段名1[ASC|DESC],…)]INTO分桶数BUCKETS][ROWFORMATDELIMITED数据分隔符][STOREDAS存储格式][LOCATION'存储路径'];1、创建表CLUSTEREDBY(字段名1,
…)[SORTEDBY(字段名1[ASC|DESC],…)]INTO分桶数BUCKETS:可选项,用于指定分桶字段、排序依据字段和分桶数,表示根据分桶字段的哈希值对数据进行分桶,并根据排序依据字段对每个桶内的数据行进行升序(ASC)或降序(DESC)排序。ROWFORMATDELIMITED数据分隔符:可选项,用于指定表中数据的分隔符。二、表的基本操作使用CREATETABLE关键字可以创建以下表,其语法格式如下。内部表外部表分区表桶表CREATE[EXTERNAL]TABLE[IFNOTEXISTS][数据库名.]表名(字段名1数据类型[COMMENT字段描述],…)[PARTITIONEDBY(字段名1数据类型,…)][CLUSTEREDBY(字段名1,
…)[SORTEDBY(字段名1[ASC|DESC],…)]INTO分桶数BUCKETS][ROWFORMATDELIMITED数据分隔符][STOREDAS存储格式][LOCATION'存储路径'];1、创建表数据分隔符主要有几种?二、表的基本操作使用CREATETABLE关键字可以创建以下表,其语法格式如下。内部表外部表分区表桶表CREATE[EXTERNAL]TABLE[IFNOTEXISTS][数据库名.]表名(字段名1数据类型[COMMENT字段描述],…)[PARTITIONEDBY(字段名1数据类型,…)][CLUSTEREDBY(字段名1,
…)[SORTEDBY(字段名1[ASC|DESC],…)]INTO分桶数BUCKETS][ROWFORMATDELIMITED数据分隔符][STOREDAS存储格式][LOCATION'存储路径'];1、创建表数据分隔符主要可以分为以下几种。①FIELDSTERMINATEDBY分隔符:用于指定字段与字段之间的分隔符。②COLLECTIONITEMSTERMINATEDBY分隔符:用于指定复杂数据类型(ARRAY、MAP和STRUCT)字段中元素与元素之间的分隔符。高手点拔二、表的基本操作使用CREATETABLE关键字可以创建以下表,其语法格式如下。内部表外部表分区表桶表CREATE[EXTERNAL]TABLE[IFNOTEXISTS][数据库名.]表名(字段名1数据类型[COMMENT字段描述],…)[PARTITIONEDBY(字段名1数据类型,…)][CLUSTEREDBY(字段名1,
…)[SORTEDBY(字段名1[ASC|DESC],…)]INTO分桶数BUCKETS][ROWFORMATDELIMITED数据分隔符][STOREDAS存储格式][LOCATION'存储路径'];1、创建表数据分隔符主要可以分为以下几种。③MAPKEYSTERMINATEDBY分隔符:用于指定MAP类型字段中key与value之间的分隔符。④LINESTERMINATEDBY分隔符:用于指定行与行之间的分隔符。高手点拔二、表的基本操作使用CREATETABLE关键字可以创建以下表,其语法格式如下。内部表外部表分区表桶表CREATE[EXTERNAL]TABLE[IFNOTEXISTS][数据库名.]表名(字段名1数据类型[COMMENT字段描述],…)[PARTITIONEDBY(字段名1数据类型,…)][CLUSTEREDBY(字段名1,
…)[SORTEDBY(字段名1[ASC|DESC],…)]INTO分桶数BUCKETS][ROWFORMATDELIMITED数据分隔符][STOREDAS存储格式][LOCATION'存储路径'];1、创建表STOREDAS存储格式:可选项,用于指定表的存储格式。其中,存储格式的默认值为TextFile,其他可取值包括ORC、SequenceFile和Parquet等。LOCATION'存储路径':可选项,用于指定外部表的数据文件在HDFS中的存储位置。如果没有使用LOCATION关键字指定存储位置,则Hive将在HDFS的“/user/hive/warehouse”目录中以外部表的表名创建一个目录,并将该表的实际数据存放在该目录中。二、表的基本操作创建内部表内部表是Hive的基本表。向内部表中导入数据时,该表的实际数据会从原来的HDFS目录移动到Hive管理的HDFS目录中。Hive可以管理内部表的元数据和实际数据,因此删除内部表时,会同时删除表的元数据和实际数据。步骤1…/>CREATEDATABASEhive_database;…/>USEhive_database;执行如下语句,创建数据库hive_database;然后切换至该数据库。例2-2在数据库hive_database中创建内部表internal_table。步骤2…/>CREATETABLEIFNOTEXISTSinternal_table>(idSTRING,nameSTRING,classSTRING) #表中的字段
>ROWFORMATDELIMITED>FIELDSTERMINATEDBY',' #定义字段与字段之间的分隔符为“,”
>LINESTERMINATEDBY'\n'; #定义行与行之间的分隔符为“\n”执行如下语句,创建内部表internal_table。二、表的基本操作创建外部表使用EXTERNAL关键字创建的表为外部表。向外部表中导入数据时,实际数据不会从原来的HDFS目录移动到Hive管理的HDFS目录中,而是保留在原来的HDFS目录中,外部表会与实际数据建立映射关系。Hive只管理外部表的元数据,因此删除外部表时,只会删除表的元数据,不会删除表的实际数据。…/>CREATEEXTERNALTABLEIFNOTEXISTSexternal_table>(idINT,nameSTRING,classSTRING)>ROWFORMATDELIMITED>FIELDSTERMINATEDBY',' >LINESTERMINATEDBY'\n'>LOCATION'/user/hive_external/external_table';例2-3在数据库hive_database中创建外部表external_table。二、表的基本操作创建分区表使用PARTITIONEDBY关键字创建的表为分区表该表对内部表或外部表中的数据进行了分区存储。…/>CREATEEXTERNALTABLEIFNOTEXISTSpartition_table>(idINT,nameSTRING,classString)#分区字段
>PARTITIONEDBY(collegeSTRING) >ROWFORMATDELIMITED>FIELDSTERMINATEDBY','>LINESTERMINATEDBY'\n';例2-4在数据库hive_database中创建分区表。二、表的基本操作创建桶表使用CLUSTEREDBY关键字创建的表为桶表该表对内部表、外部表或分区表各分区中的数据进行了分桶存储。…/>CREATETABLEIFNOTEXISTSbucket_table(>student_idSTRING,student_nameSTRING,>collegeSTRING,classSTRING)#按照college字段进行分桶,并指定桶的个数为3>CLUSTEREDBY(college)INTO3BUCKETS>ROWFORMATDELIMITED>FIELDSTERMINATEDBY','>LINESTERMINATEDBY'\n';例2-5在数据库hive_database中创建桶表bucket_table。二、表的基本操作使用SHOWTABLES关键字可以显示表,其语法格式如下。SHOWTABLES[LIKE筛选条件];使用DESCRIBE关键字可以查看表信息,其语法格式如下。#查看表的基本信息/详细信息DESCRIBE[FORMATTED][数据库名.]表名;FORMATTED为可选项,用于查看表的详细信息。2、显示表3、查看表信息小试牛刀显示数据库hive_database中的所有表。查看数据库hive_database中桶表bucket_table的基本信息和详细信息。二、表的基本操作(1)重命名表:使用ALTERTABLE和RENAMETO关键字可以重命名表,其语法格式如下。ALTERTABLE[数据库名.]表名RENAMETO新的表名;(2)修改字段:使用ALTERTABLE和CHANGE关键字可以修改字段,其语法格式如下。ALTERTABLE[数据库名.]表名CHANGE旧的字段名新的字段名新字段的数据类型[FIRST|AFTER指定字段];FIRST表示将修改的字段放在第一列,前提是必须保证表中每个字段的数据类型相同AFTER表示将修改的字段放在指定字段之后,前提是必须保证指定字段及该字段之后所有字段的数据类型相同。4、修改表二、表的基本操作(3)添加字段:使用ALTERTABLE和ADDCOLUMNS关键字可以添加字段,其语法格式如下。ALTERTABLE[数据库名.]表名ADDCOLUMNS(字段名1数据类型[COMMENT字段描述],…);(4)替换字段:使用ALTERTABLE和REPLACECOLUMNS关键字可以替换字段,其语法格式如下。ALTERTABLE[数据库名.]表名REPLACECOLUMNS(字段名1数据类型,…);需要注意的是,替换字段时,会替换掉表中的所有字段。小提示修改字段的语句只会修改Hive表的元数据,不会修改表的实际数据,所以修改字段的数据类型要与原字段的数据类型兼容。否则,Hive将无法完成字段的修改操作。二、表的基本操作步骤1…/>ALTERTABLEinternal_tableRENAMETOinternal_table1;执行如下语句,将内部表internal_table重命名为internal_table1。例2-6修改数据库hive_database中的内部表internal_table。步骤2…/>ALTERTABLEinternal_table1>CHANGEidstu_idSTRINGAFTERname;执行如下语句,将内部表internal_table1的id字段名修改为stu_id,并将stu_id字段移动到name字段之后。步骤3…/>ALTERTABLEinternal_table1ADDCOLUMNS(ageINT);执行如下语句,在内部表internal_table1中添加age字段。二、表的基本操作步骤4…/>DESCRIBEinternal_table1;执行如下语句,查看内部表internal_table1的基本信息。从图中可以看出,内部表internal_table1中成功添加age字段,并且age字段在所有已有字段(name、stu_id和class)的后面。内部表internal_table1的基本信息二、表的基本操作(1)添加分区:是指在分区表中根据分区字段添加实际分区。使用ADDPARTITION关键字可以添加分区,其语法格式如下。ALTERTABLE[数据库名.]表名ADDPARTITION(分区字段1=分区字段的值1,…)[PARTITION(分区字段1=分区字段的值1,…)…][LOCATION'存储路径'];分区字段的值即实际分区名,分区名是数据存储路径的一部分,默认情况下Hive不支持含有中文或特殊字符的分区名。因此,分区字段的值不能含有中文或特殊字符。高手点拔4、修改表二、表的基本操作(2)显示分区:使用SHOWPARTITIONS关键字可以显示分区,其语法格式如下。SHOWPARTITIONS[数据库名.]表名[PARTITION(分区字段1=分区字段的值1,…)];#可选项,用于显示指定分区(3)查看分区信息:使用DESCRIBE关键字可以查看分区信息,其语法格式如下。DESCRIBE[FORMATTED][数据库名.]表名PARTITION(分区字段1=分区字段的值1,…);(4)使用DROPPARTITION关键字可以删除分区,其语法格式如下。ALTERTABLE[数据库名.]表名DROP[IFEXISTS]PARTITION(分区字段1=分区字段的值1,…);二、表的基本操作步骤1…/>ALTERTABLEpartition_table>ADDPARTITION(college='Arts')>PARTITION(college='English');执行如下语句,在分区表partition_table中添加两个分区。例2-7在数据库hive_database的分区表partition_table中执行不同的分区操作。步骤2…/>SHOWPARTITIONSpartition_table;执行如下语句,显示分区表partition_table的分区,结果。分区表partition_table的分区二、表的基本操作步骤3…/>DESCRIBEpartition_tablePARTITION(college='Arts');执行如下语句,查看分区表partition_table中college=Arts分区的基本信息。college=Arts分区的基本信息步骤4…/>ALTERTABLEpartition_table>DROPPARTITION(college='Arts');执行如下语句,删除分区表partition_table的college=Arts分区。二、表的基本操作使用DROPTABLE关键字可以删除表,其语法格式如下。DROPTABLE[IFEXISTS][数据库名.]表名;小试牛刀删除数据库hive_database中的桶表bucket_table4、分区表的分区操作任务实施
任务分析首先设计网站流量数据仓库的分层,确定不同分层中包含的数据库、表和数据源,然后根据设计好的分层,分别创建数据库和表。
实施步骤构建网站流量数据仓库任务实施
实施步骤1.设计网站流量数据仓库的分层网站流量数据仓库的分层设计如表所示。分层数据库表数据源源数据层web_ods_databasephone_ods_table用户手机信息数据文件“phone.txt”weblog_ods_table用户上网日志记录数据文件“http.log”数据仓库层的明细层web_dwd_databaseweb_dwd_table合并表phone_ods_table和表weblog_ods_table后,查询到的部分数据,表中字段包括phone_numpart、web、upstream、downstream、province、city和operator数据仓库层的业务层web_dws_databasestream_dws_table统计表web_dwd_table中不同手机号码段、请求网站的链接、省份、运营商的总流量,表中字段包括total_stream、phone_numpart、web、province、operator和group_type。其中,group_type表示维度,当group_type为1时,表示手机号码段维度;当group_type为2时,表示请求网站的链接维度;当group_type为3时,表示省份维度;当group_type为4时,表示运营商维度任务实施
实施步骤2.创建源数据层的数据库和表步骤1在Worker1主机上启动HiveServer2服务,并在Worker2主机上启动Beeline工具远程连接Worker1主机的HiveServer2服务。…/>CREATEDATABASEIFNOTEXISTSweb_ods_database;步骤2执行如下语句,创建源数据层数据库web_ods_database。…/>USEweb_ods_database;…/>CREATEEXTERNALTABLEIFNOTEXISTSphone_ods_table(>phone_noSTRING,phone_numpartSTRING,>provinceSTRING,citySTRING,>operatorSTRING,zipcodeSTRING,步骤3执行如下语句,在数据库web_ods_database中创建外部表phone_ods_table。任务实施2.创建源数据层的数据库和表…/>USEweb_ods_database;…/>CREATEEXTERNALTABLEIFNOTEXISTSphone_ods_table(>phone_noSTRING,phone_numpartSTRING,>provinceSTRING,citySTRING,>operatorSTRING,zipcodeSTRING,>areacodeINT,administrativecodeSTRING)>ROWFORMATDELIMITED>FIELDSTERMINATEDBY'\t'>STOREDASTEXTFILE>LOCATION"/user/hive_data/weblog.db/phone_ods";步骤3执行如下语句,在数据库web_ods_database中创建外部表phone_ods_table。任务实施
实施步骤…/>CREATEEXTERNALTABLEIFNOTEXISTSweblog_ods_table(>phone_numpartSTRING,webSTRING,>upstreamINT,downstreamINT)>ROWFORMATDELIMITED>FIELDSTERMINATEDBY'\t'>STOREDASTEXTFILE>LOCATION"/user/hive_data/weblog.db/weblog_ods";步骤4执行如下语句,在数据库web_ods_database中创建外部表weblog_ods_table。任务实施
实施步骤3.创建明细层的数据库和表步骤1执行如下语句,创建明细层数据库web_dwd_database。步骤2执行如下语句,在数据库web_dwd_database中创建明细表web_dwd_table。…/>USEweb_dwd_database;…/>CREATETABLEIFNOTEXISTSweb_dwd_table(>phone_numpartSTRING,webSTRING,>upstreamINT,downstreamINT,>provinceSTRING,citySTRING,operatorSTRING)>ROWFORMATDELIMITED>FIELDSTERMINATEDBY'\t'>STOREDASORC;…/>CREATEDATABASEIFNOTEXISTSweb_dwd_database;任务实施
实施步骤4.创建业务层的数据库和表步骤1执行如下语句,创建业务层数据库web_dws_database。步骤2执行如下语句,在数据库web_dws_database中创建宽表stream_dws_table。…/>USEweb_dws_database;…/>CREATETABLEIFNOTEXISTSstream_dws_table(>total_streamINT,>phone_numpartSTRING,webSTRING,>province
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年BIM技术在地铁建设中的应用实例
- 贺银成课件笔记
- 2026春招:文员笔试题及答案
- 货运安全培训班讲话
- D打印技术在医疗领域应用前景分析
- 临床药事管理改进方案
- 货物搬运安全知识培训课件
- 医院医疗纠纷处理流程汇报
- 2026年蚌埠学院单招综合素质笔试参考题库带答案解析
- 医疗信息录入员的职业礼仪
- 2026年广州市民政局直属事业单位第一次公开招聘工作人员25人备考题库及1套参考答案详解
- 2025中国航空集团建设开发有限公司高校毕业生校园招聘5人笔试参考题库附带答案详解(3卷合一)
- 2025年山东畜牧兽医职业学院单招职业适应性测试题库附答案
- 贵州国企招聘:2026贵州贵阳花溪智联数智科技服务有限公司招聘9人参考题库附答案
- 1104报表基础报表、特色报表填报说明v1
- 铝材销售沟通话术技巧
- 危化品无仓储经营培训
- 六上看拼音写词语
- 北京市西城区2024-2025学年三年级上学期期末语文试题
- DB11-T 2493-2025 餐饮服务单位使用丙类液体燃料消防安全管理规范
- 2025年湖南省长沙市生地会考试卷附带长郡月亮岛中学生地会考及答案
评论
0/150
提交评论