Hive 2.3.7 安装
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&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&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文件中有五种字符必须转义才能使用
分别是
> == > 大于号
< == < 小于号
& == & 和
' == ' 单引号
" == " 双引号
我出现这个错误就是由于mysql8.0的连接驱动是jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
中间有个&
故报错转义成&
即可解决
4.4 Relative path in absolute URI: ${system:java.io.tmpdir%7D/$%7Bsystem:user.name%7D
${system:java.io.tmpdir}
不识别,自己定义log目录