825
人物
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
首先,我假設你已經能夠用Derby作為數據正常運行hive了(參考文章:https://blog.csdn.net/jiacai2050/article/details/11738887),下麵需要做一些配置:
把hive/conf文件夾中創建一個hive-site.xml的文件,內容為:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/metastore_db?createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>mysql</value> </property> </configuration>很明顯,最後兩項是配置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安裝:
https://wiki.ubuntu.org.cn/MySQL%E5%AE%89%E8%A3%85%E6%8C%87%E5%8D%97
https://www.cnblogs.com/wuhou/archive/2008/09/28/1301071.html
https://stackoverflow.com/questions/9972611/not-able-to-install-mysql-on-ubuntu-11
mysql啟動/停止:
https://blog.csdn.net/phpandjava/article/details/4636610
mysql中文亂碼:
https://alanlhy.iteye.com/blog/1060320
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服務起不來。
最後上圖,有圖有真相呀。
圖1. 上圖是沒有修改前的mysql編碼情況
圖2.上圖沒有修改後的mysql編碼情況
對於已經存在的數據庫,可以通過執行下麵的命令更改字符集:
ALTER DATABASE <db-name> CHARACTER SET utf8 COLLATE utf8_general_ci;參考:
https://stackoverflow.com/questions/22572558/how-to-set-character-set-database-and-collation-database-to-utf8-in-my-ini
最後更新:2017-04-03 15:21:44