1. 下载Hive

http://mirror.bit.edu.cn/apache/hive/

2. 解压配置

解压后进入conf目录

cp hive-default.xml.template hive-site.xml

编辑hive-site.xml,增加下面内容,mysql用的8.0.19

  <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123456</value>
    </property>
   <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.0.103:3306/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
    </property>
    <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/home/matrix42/apps/hive/tmp/scratchdir</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  <property>
    <name>hive.querylog.location</name>
    <value>/home/matrix42/apps/hive/tmp/querylog</value>
    <description>Location of Hive run time structured log file</description>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/home/matrix42/apps/hive/tmp/resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>
  <property>
    <name>hive.server2.logging.operation.log.location</name>
    <value>/home/matrix42/apps/hive/tmp/operation_logs</value>
    <description>Top level directory where operation logs are stored if logging functionality is enabled</description>
  </property>

下载JDBC Driver放到Hive的lib目录下

执行

schematool -dbType mysql -initSchema

初始化元数据

3.验证

hive

show tables;

create table t1(
    id      int
   ,name    string
)
row format delimited
fields terminated by ',';

insert into t1 values(1,a);

selec * from t1;

4.遇到的问题

4.1 执行schematool -dbType mysql -initSchema报Failed to get schema version.

检查mysql配置,检查mysql是否允许了远程访问

4.2 The server time zone value '�й���׼ʱ��' is unrecognized

解决方法在url后面添加?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

然后会出现下面的问题

4.3 The reference to entity "useJDBCCompliantTimezoneShift" must end with the ';' delimiter.

这个错误是转义字符的问题

在.xml文件中有五种字符必须转义才能使用

分别是

      &gt; ==  >  大于号

      &lt;  ==  <  小于号

      &amp; == &  和

      &apos; == '  单引号

      &quot; == "  双引号

我出现这个错误就是由于mysql8.0的连接驱动是jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC中间有个&故报错转义成&amp;即可解决

4.4 Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D

${system:java.io.tmpdir}不识别,自己定义log目录