Hive运行

Hive 是什么之类的就不说了。下面说说简单的安装过程。

其实和hadoop很类似,毕竟是一家人嘛。

1. 下载,解压apache-hive-1.2.1-bin.tar.gz (这是本人用的版本)

       tar -zxvf  apache-hive-1.2.1-bin.tar.gz

2.  设置环境变量

       vi  ~/.bash_profile    (添加两行)

       export HIVE_HOME=/home/hadoop/tools/apache-hive-1.2.1-bin

      export PATH=$PATH:$HIVE_HOME/bin

      source  ~/.bash_profile

3. 更改配置

     cd   ${HIVE_HOME}/conf

     copy 所有的后缀为template的文件,去掉后面的.template作为文件名。

     mv hive-default.xml hive-site.xml

    修改hive-env.sh

      HADOOP_HOME=/home/hadoop/tools/hadoop-2.6.0

        # Hive Configuration Directory can be controlled by:
       export HIVE_CONF_DIR=/home/hadoop/tools/apache-hive-1.2.1-bin/conf

    修改hive-site.xml,将MetaData存储到其他机器上的Mysql. (关于怎么安装mysql可以自己想办法,一定搞得定的,相信自己,只要有心,强烈建议不要用hive自带的内嵌式Derby,至少也要用个server版的)

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://192.168.121.1:3306/hive</value>
    <description>JDBC connect string for a JDBC metastore</description>
  </property>
  <property>

<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.jdbc.Driver</value>
    <description>Driver class name for a JDBC metastore</description>
  </property>

<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>hive</value>
    <description>password to use against metastore database</description>
  </property>

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>hive</value>
    <description>Username to use against metastore database</description>
  </property>

   这里是已经创建了hive这个database in Mysql,用户名和密码都是hive,你可以改成自己的

  其他的配置项可以根据需要做少量修改。

  使用Mysql就需要把mysql的JDBC驱动放到${HIVE_HOME}/lib下面,当然也可以用其他的RDBMS。

4.  启动hadoop,然后启动 hive

     可能出现的错误:

  a.   [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)

原因是hadoop目录下存在老版本jline:
 
解决方法是:
将hive下的新版本jline的JAR包拷贝到hadoop下:
cp /hive/apache-hive-1.2.1-bin/lib/jline-2.12.jar ./

    启动之后

  [hadoop@vm11 apache-hive-1.2.1-bin]$ hive

Logging initialized using configuration in file:/home/hadoop/tools/apache-hive-1.2.1-bin/conf/hive-log4j.properties
hive> create table aaa(name string);

  FAILED: Error in metadata: javax.jdo.JDODataStoreException: Error(s) were found while auto-creating/validating the datastore for classes. The errors are printed in the log, and are attached to this exception.
NestedThrowables:
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Specified key was too long; max key length is 1000 bytes
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

可能是数据库的编码格式不对,更改Mysql的字符集
alter database hivedb character set latin1;

再运行下,就OK了。也可以通过

hive -hiveconf hive.root.logger=DEBUG,console

来排查出现的错误。


5.运行DML DDL

运行成功了,就可以通过各种CRUD之类的语句来折磨Hive的,不知道谁折磨谁,试试就知道了,呵呵。












  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值