hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。
前提安装了hadoop
下载地址: http://apache.fayea.com/hive/hive-1.2.0/
版本: apache-hive-1.2.0-bin.tar.gz
解压: tar –zxvf apache-hive-1.2.0-bin.tar.gz
配置环境变量:
export HIVE_HOME=/opt/apache-hive-1.2.0-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_LIB=$HIVE_HOME/lib
export CLASSPATH=$CLASSPATH:$HIVE_LIB
export PATH=$HIVE_HOME/bin:$PATH
cd /opt/apache-hive-1.2.0-bin/conf 将hive-env.sh.template 拷贝为 hive-env.sh
cp hive-env.sh.template hive-env.sh
更改hive-env.sh的内容:
vi hive-env.sh
HADOOP_HOME=/opt/soft-228238/hadoop-2.6.0
export HIVE_CONF_DIR=/opt/apache-hive-1.2.0-bin/conf
cp hive-default.xml.template hive-site.xml
vi hive-site.xml
修改如下配置中的信息:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:oracle:thin:@192.168.XX.XXX:1521:dpap</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>user</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
<description>password to use against metastore database</description>
</property>
将 数据库驱动包(oracle-jdbc-10.1.0.2.0.jar) 放入到 /opt/apache-hive-1.2.0-bin/lib 中
启动 hive
cd /opt/apache-hive-1.2.0-bin/bin
执行:./hive --service metastore (使用远端数据库 hive服务端程序)
./hive
hive -hiveconf hive.root.logger=DEBUG,console
schematool -dbType oracle -initSchema
常见问题:
- 启动报错:
Logging initialized using configuration in jar:file:/opt/apache-hive-1.2.0-bin/lib/hive-common-1.2.0.jar!/hive-log4j.properties
Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI:
${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:519)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:677)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at org.apache.hadoop.fs.Path.initialize(Path.java:206)
at org.apache.hadoop.fs.Path.<init>(Path.java:172)
at org.apache.hadoop.hive.ql.session.SessionState.createSessionDirs(SessionState.java:560)
at org.apache.hadoop.hive.ql.session.SessionState.start(SessionState.java:505)
... 8 more
Caused by: java.net.URISyntaxException: Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
at java.net.URI.checkPath(URI.java:1804)
at java.net.URI.<init>(URI.java:752)
at org.apache.hadoop.fs.Path.initialize(Path.java:203)
... 11 more
解决方案:cd /opt/soft-228238/hadoop-2.6.0/bin
执行: /hadoop fs -chmod -R 777 /tmp/hive
cd /opt/apache-hive-1.2.0-bin/conf
vi hive-site.xml (修改如下配置信息的value)
<property>
<name>hive.exec.local.scratchdir</name>
<value>/tmp/hive</value>
<description>Local scratch space for Hive jobs</description>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/tmp/${hive.session.id}_resources</value>
<description>Temporary local directory for added resources in the remote file system.</description>
</property>
<property>
<name>hive.querylog.location</name>
<value>/tmp/hive</value>
<description>Location of Hive run time structured log file</description>
</property>
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/tmp/hive/operation_logs</value>
<description>Top level directory where operation logs are stored if logging functionality is enabled</description>
</property>
- 错误2:
[ERROR] Terminal initialization failed; falling back to unsupported
java.lang.IncompatibleClassChangeError: Found class jline.Terminal, but interface was expected
at jline.TerminalFactory.create(TerminalFactory.java:101)
at jline.TerminalFactory.get(TerminalFactory.java:158)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:229)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:221)
at jline.console.ConsoleReader.<init>(ConsoleReader.java:209)
at org.apache.hadoop.hive.cli.CliDriver.setupConsoleReader(CliDriver.java:787)
at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:721)
at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681)
at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
解决方案:
原因是hadoop目录下存在老版本jline:
/hadoop-2.6.0/share/hadoop/yarn/lib:
-rw-r--r-- 1 root root 87325 Mar 10 18:10 jline-0.9.94.jar
解决方法是:
将hive下的新版本jline的JAR包拷贝到hadoop下:
cp /opt/apache-hive-1.2.0-bin/lib/jline-2.12.jar ./
mv jline-0.9.94.jar jline-0.9.94.jar.bak
- hive 连接 oracle 创建表失败
使用 create table 命令创建表失败:
日志信息在 /temp/root/hive.log 目录查看日志错误信息:
解决方案:
用解压缩工具打开${HIVE_HOME}/lib中的hive-metastore-1.2.0.jar,hive-jdbc-1.2.0-standalone.jar发现名为package.jdo的文件,打开该文件并找到下面的内容。
<field name="viewOriginalText" default-fetch-group="false">
<column name="VIEW_ORIGINAL_TEXT" jdbc-type="LONGVARCHAR"/>
</field>
<field name="viewExpandedText" default-fetch-group="false">
<column name="VIEW_EXPANDED_TEXT" jdbc-type="LONGVARCHAR"/>
</field>
可以发现列VIEW_ORIGINAL_TEXT和VIEW_EXPANDED_TEXT的类型都为LONGVARCHAR,对应于Oracle中的LONG,这样就与Oracle表只能存在一列类型为LONG的列的要求相矛盾,所以就出现错误了。
按照Hive官网的建议将该两列的jdbc-type的值改为CLOB,修改后的内容如下所示。
<field name="viewOriginalText"default-fetch-group="false">
<column name="VIEW_ORIGINAL_TEXT" jdbc-type="CLOB"/>
</field>
<field name="viewExpandedText"default-fetch-group="false">
<column name="VIEW_EXPANDED_TEXT" jdbc-type="CLOB"/>
</field>
修改以后,重启hive。
相关推荐
本文将围绕“Hue常见问题解决方案”这一主题,详细阐述Hue与Hive在大数据平台中可能遇到的问题以及相应的解决策略。 首先,我们来了解Hue的基本功能。Hue是Cloudera公司开发的一款开源Web应用程序,它提供了一个...
本篇文章将指导您如何在CentOS 6.4下安装Hive,并解决可能遇到的错误。 环境及软件介绍 本篇文章使用的环境是CentOS 6.4-x86_64-bin-DVD1.iso,软件版本为Hadoop 2.2.0和Hive 0.12.0,以及MySQL 5.1.66。 MySQL ...
以上就是针对Hive on Tez常见报错的分析及解决方案。在实际操作中,应根据具体环境和需求调整相关配置,确保Hive作业的稳定性和效率。同时,对于复杂的查询场景,理解Hive和Tez的工作原理以及它们之间的交互至关重要...
本文档将详细介绍如何安装Hive 1.2.1版本,并解决在安装过程中可能遇到的一个常见错误。Hive是一款基于Hadoop的数据仓库工具,可以将结构化的数据文件映射成一张表,并提供SQL查询功能。通过Hive,用户可以使用SQL...
### Hive的一些报错及解决方法 #### 一、Hive连接报错 在更换网络接口卡后重新启动服务时,可能会遇到Hive连接失败的问题。...通过以上详细的步骤,可以有效地解决Hive在使用过程中遇到的各种常见问题。
#### 六、常见问题与解决方法 1. **无法连接到 MySQL 数据库** 确保 MySQL 服务已启动且允许远程访问。检查防火墙设置,确保端口 3306 已开放。 2. **JDBC 驱动程序找不到** 确认 JDBC 驱动程序已正确放置在 `...
"Hadoop 使用常见问题以及解决方法" Hadoop 作为一个大数据处理的开源框架,广泛应用于数据存储、处理和分析等领域。但是在使用 Hadoop 时,经常会遇到一些常见的问题,本文将对这些问题进行总结和解决。 Shuffle ...
12_Hadoop及Hive配置支持snappy压缩 13_Hive中的常见调优 14_Hive中的数据倾斜及解决方案-三种join方式 15_Hive中的数据倾斜及解决方案-group by 16_Hive中使用正则加载数据 17_Hive中使用Python脚本进行预处理
综上所述,本文详细介绍了如何安装和整合Hadoop2.2、HBase0.96和Hive0.12,并提供了一些常见的问题解决方案。对于初次接触这些技术的新手来说,遵循上述步骤可以大大减少安装过程中可能出现的问题。此外,对于那些...
总结起来,将Hive metastore迁移到达梦数据库涉及创建数据库用户和表空间、修改Hive配置文件以及初始化元数据等步骤。这个过程不仅可以提升元数据管理的性能,还可以利用达梦数据库的特性来增强数据安全性。然而,...
替换这些jar包意味着升级了Hive在CDH环境中的执行部分和ORC处理库,以解决在2.1.1版本中遇到的问题。 分发新jar包到各个服务器是必要的步骤,因为Hive通常在分布式环境中运行,每个节点都需要有正确的库才能正确...
成功编译后,将Tez的相关jar包安装到Hadoop的类路径中,这通常涉及到将编译后的jar文件复制到Hive的lib目录下,尽管这种方法在某些情况下可能会导致问题。 7. **Hive on Tez的配置**: 在Hive的配置文件(如`hive-...
48.Hadoop及Hive配置支持snappy压缩 49.Hive中的常见调优 50.Hive中的数据倾斜及解决方案-三种join方式 51.Hive中的数据倾斜及解决方案-group by 52.Hive中使用正则加载数据 53. Hive中使用Python脚本进行预处理 第...
“Hive搭建使用笔记”可能包含了实践过程中的注意事项、常见问题及其解决方案,是学习过程中宝贵的参考资料。 通过这个压缩包,你可以全面掌握Hive的基础知识,包括安装、配置、表管理和SQL操作。实践是学习最好的...
【Hive架构概述】 ...通过以上步骤,通常能有效地定位和解决 Hive 中遇到的大部分问题。然而,对于更复杂的问题,可能需要结合其他工具,如监控系统、集群资源管理器的 UI,或者进行更深入的代码分析。
#### 四、常见问题及解决方案 **4.1 Hadoop安装常见问题** - **权限问题**: 确保所有节点上Hadoop相关的目录具有正确的权限。 - **网络问题**: 检查各个节点之间的网络连通性。 - **日志分析**: 通过分析日志文件...
然而,在实际应用中,开发人员可能会遇到一个常见问题——Spark 无法直接使用 Hive 中定义的自定义函数(UDF)。本文将深入探讨这一问题,并提供解决方案。 #### 一、问题背景 当开发者尝试在 Spark 应用程序中...
描述中提到,“用于Hive和HBase的连接,通过hive操作hbase上的表”,这表明这些JAR文件是为了解决Hive与HBase集成的问题。Hive-HBase连接器允许用户在Hive中创建外部表,将这些表映射到HBase的数据表,从而可以在...