Hadoop数据仓库工具Hive详解:基于HDFS的SQL式查询

3星 · 超过75%的资源 需积分: 16 40 下载量 35 浏览量 更新于2024-09-18 收藏 1.06MB PDF 举报
“Hadoop数据仓库工具hive介绍.pdf” 在大数据处理领域,Hive是一个非常重要的组件,它被设计用于处理和管理大规模结构化数据。由Facebook最初开发,并且现在是Apache Hadoop项目的一部分,Hive提供了对分布式存储数据的SQL-like查询能力,使非编程背景的用户也能方便地进行数据分析。本文将详细介绍Hive的基础概念、架构以及其与SQL的相似之处。 1. **简介** Hive是一个基于Hadoop的数据仓库工具,它允许用户通过类SQL的查询语言——HiveQL(HQL)来对存储在HDFS(Hadoop Distributed File System)上的大量数据进行查询和分析。Hive的目标是将复杂的数据处理任务转换为简单的SQL语句,减少了学习和使用的难度。同时,它利用Hadoop的MapReduce框架进行分布式计算,确保了处理大规模数据的能力。Hive还与其他系统如Yahoo的Pig、Google的Sawzall和Microsoft的DryadLINQ相类似,但各有其特点和适用场景。 2. **架构** - **操作界面**:Hive提供了多种交互方式,包括命令行接口(CLI)、Web界面和Thrift API,便于不同需求的用户使用。 - **Driver**:这是Hive的核心部分,它接收用户的HQL语句,将其转化为一系列的MapReduce任务,并提交到Hadoop集群执行。 - **Hadoop**:Hadoop作为Hive的数据存储和计算基础,其中HDFS负责存储,MapReduce负责分布式计算。 - **Metastore**:存储元数据,即关于数据表、列、分区等信息,这些信息对于查询优化至关重要。 3. **语言** Hive支持两种主要的语言类型:DDL(Data Definition Language)和DML(Data Manipulation Language)。DDL主要用于创建、修改和删除数据表、视图和分区,而DML则涉及数据的插入、更新和删除操作。Hive更倾向于使用DDL,提供与SQL类似的语法,如`CREATE TABLE`, `ALTER TABLE`, `DROP TABLE`等。同时,Hive也支持一些DML操作,例如`INSERT OVERWRITE`。 4. **操作示例** - **加载数据**:Hive可以通过`LOAD DATA`命令将本地或HDFS上的文件加载到表中,例如`LOAD DATA LOCAL INPATH '/logs/urls.txt' INTO TABLE urls PARTITION (ds='2010-01-01')`。 - **查询操作**:Hive支持复杂的查询操作,如`SELECT category, AVG(pagerank) FROM urls WHERE pagerank > 0.2 GROUP BY category`,这类似于SQL中的聚合查询。 - **写入数据**:`INSERT OVERWRITETABLE result`命令可以将查询结果写入新的表中。 - 相比之下,Pig使用的是DML风格,例如`LOAD`, `FILTER`, `GROUP`, `FOREACH`等操作,虽然功能类似,但语法略有不同。 Hive在大数据处理中扮演着重要的角色,它简化了对Hadoop集群的交互,使得数据分析工作更加高效。然而,由于Hive的查询性能受到MapReduce的限制,可能不适合实时或低延迟的查询需求。因此,对于需要快速响应的场景,通常会结合其他工具如Spark SQL或者Impala来提升查询速度。Hive是大数据处理中的一个强大工具,尤其适合批处理和离线分析。

结合下面hive元数据信息,生成hive建表语句,并且加上comment,注意day是分区 dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 apk 应用包名 string day string入库日期 org.apache.hadoop.hive.ql.io.orc.OrcSerde serialization.format 1 hdfs://DSbigdata/hiveDW/dwd_exten_crawl/appmarket_appinfo org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 app_name 应用名称 string day string 入库日期 org.apache.hadoop.hive.ql.io.orc.OrcSerde serialization.format 1 hdfs://DSbigdata/hiveDW/dwd_exten_crawl/appmarket_appinfo org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 app_url 平台详情页链接 string day string入库日期 org.apache.hadoop.hive.ql.io.orc.OrcSerde serialization.format 1 hdfs://DSbigdata/hiveDW/dwd_exten_crawl/appmarket_appinfo org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 cate 应用所属分类 string day string入库日期 org.apache.hadoop.hive.ql.io.orc.OrcSerde serialization.format 1 hdfs://DSbigdata/hiveDW/dwd_exten_crawl/appmarket_appinfo org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 other 其他 string day string 入库日期 org.apache.hadoop.hive.ql.io.orc.OrcSerde serialization.format 1 hdfs://DSbigdata/hiveDW/dwd_exten_crawl/appmarket_appinfo org.apache.hadoop.hive.ql.io.orc.OrcInputFormat org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat dwd_weibo_crawl NULL appmarket_appinfo GN线应用市场 2021-01-07 15:07:29 region 平台名称 string day stri

2023-06-10 上传

ALTER DATABASE test1 RENAME TO test2; NoViableAltException(254@[]) at org.apache.hadoop.hive.ql.parse.HiveParser.alterDatabaseStatementSuffix(HiveParser.java:9043) at org.apache.hadoop.hive.ql.parse.HiveParser.alterStatement(HiveParser.java:7647) at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:4337) at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2494) at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1420) at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:220) at org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:74) at org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:67) at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:616) at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1826) at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1773) at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1768) at org.apache.hadoop.hive.ql.reexec.ReExecDriver.compileAndRespond(ReExecDriver.java:126) at org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:214) at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:239) at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:188) at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:402) at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:821) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.hadoop.util.RunJar.run(RunJar.java:318) at org.apache.hadoop.util.RunJar.main(RunJar.java:232) FAILED: ParseException line 1:21 cannot recognize input near 'test1' 'RENAME' 'TO' in alter database statement

2023-05-24 上传