hive mysql 不兼容_HIVE再次尝试 用 Mysql 环境搭建 以及 mysql中文乱码完美解决-阿里云开发者社区...

上文说道hive用默认的Derby作为metadata的存放处,但是这个缺点比较多,只能同时让一个用户登陆,重启机器后建的表也没了,不能用于真正的集群,下面讲解用mysql作为数据的搭建方法。

1. hive安装

第一步:安装mysql

因为我用的是ubuntu系统,安装比较简单,一行命令搞定

sudo apt-get install mysql-server

这里顺便说下mysql的数据文件放在/var/lib/mysql目录下,配置文件放在:/etc/mysql目录下

对于mysql5.5版本:可用sudo service mysql stop/start/restart 进行mysql开启与关闭

对于mysql5.5之前的版本,可用sudo /etc/init.d/mysql start|stop|restart|reload|force-reload|status 进行相关操作,最常用的就是stop、restart、start命令

第二步:配置hive

把hive/conf文件夹中创建一个hive-site.xml的文件,内容为:

javax.jdo.option.ConnectionURL

jdbc:mysql://localhost:3306/metastore_db?createDatabaseIfNotExist=true

javax.jdo.option.ConnectionDriverName

com.mysql.jdbc.Driver

javax.jdo.option.ConnectionUserName

root

javax.jdo.option.ConnectionPassword

mysql

很明显,最后两项是配置mysql的连接用户名与密码,可根据实际情况更改。

这里还需要把mysql的连接jar把放到classpath下,注意:linux上CLASSPATH 必须为大写,我这里直接把mysql-connector-java-5.1.26-bin.jar放到hive的lib文件夹下,然后再在 .profile文件中添加这么一句:

export CLASSPATH=$HIVE_HOME/lib:$CLASSPATH

OK,这两步走完就完成配置任务了。

2.  ubuntu 安装mysql遇到的问题

我在安装mysql遇到这么一个问题,我把日志贴出来:

正在设置 mysql-server-5.5 (5.5.27-0ubuntu2) ...

start: Job failed to start

invoke-rc.d: initscript mysql, action "start" failed.

dpkg: error processing mysql-server-5.5 (--configure):

子进程 已安装 post-installation 脚本 返回了错误号 1

dpkg: dependency problems prevent configuration of mysql-server:

mysql-server 依赖于 mysql-server-5.5;然而:

软件包 mysql-server-5.5 尚未配置。

dpkg: error processing mysql-server (--configure):

依赖关系问题 - 仍未被配置

因为错误消息指示这是由于上一个问题导致的错误,没有写入 apport 报告。

在处理时有错误发生:

mysql-server-5.5

mysql-server

E: Sub-process /usr/bin/dpkg returned an error code (1)大约就是这么一个错误,这个问题让我很纠结了,后来在stackoverflow上找到一个方法:

sudo dpkg --remove mysql-server

sudo apt-get purge -f mysql-server mysql-common

sudo apt-get install mysql-server mysql-common执行这三行命令后完美解决问题,但是原因我还没找到,先留一下。

修改mysql的root口令 :  sudo mysqladmin -u root -p password '你的新密码'

参考文章:

mysql安装:

mysql启动/停止:

3. mysql中文乱码解决

这里简单明了地说下:

对于mysql5.5版本,需要在/etc/mysql/my.cnf做如下修改:

[client]下添加:default-character-set = utf8

[mysqld]下添加:character-set-server

= utf8

对于mysql5.5之前的版本,做如下修改:

在[client] 和 [mysqld]下都添加一行

default-character-set

= utf8

如果在mysql5.5 版本中也这么配置会导致mysql服务起不来。

最后上图,有图有真相呀。

0169f6376d04e9880386a2059904eb06.png

图1. 上图是没有修改前的mysql编码情况

dde9aeb5cf541fa6e1ab9b16871d3577.png

图2.上图没有修改后的mysql编码情况

对于已经存在的数据库,可以通过执行下面的命令更改字符集:

ALTER DATABASE CHARACTER SET utf8 COLLATE utf8_general_ci;参考:

http://stackoverflow.com/questions/22572558/how-to-set-character-set-database-and-collation-database-to-utf8-in-my-ini

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值