閱讀825 返回首頁    go 人物


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

  上一篇:go Android 項目中使用 的 優化建議
  下一篇:go COM緇勪歡-鍗氬-浜戞爾紺懼尯-闃塊噷浜?