大資料利用hive on spark程式操作hive
hive on spark
作者:小濤
Hive是資料倉庫,他是處理有結構化的資料,當資料沒有結構化時hive就無法匯入資料,而它也是遠行在mr程式之上的基於磁碟計算,然而我們今天來讓hive遠行在spark上,基於記憶體計算,在基於記憶體來讓hive遠行在記憶體上這樣就比以前的快個幾十倍,現在讓我們一起來看看hive on spark吧!
首先要說說hive他的一些元資料資訊是儲存在mysql裡面的,所以我們首先要安裝mysql服務,而真實的資料是儲存在hdfs中的,本文作者的大資料叢集hadoop 2.8.7 spark 2.3.0
Scala 2.11 jdk 1.8.45 hive 1.2.2
安裝:mysql通過yum -y install mysql mysql-server
啟動:mysql服務service mysqld start,當啟動好以後可以在命令列直接登入mysql了,輸入mysql,但是這樣是不安全的我們需要給mysql初始化密碼跟設定密碼
在命令列輸入/usr/mysql_secure_installation,通過這個來設定密碼
本文作者通過以上操作就把mysql的密碼初始化了,密碼是root123
通過mysql -u root -proot123就可以登入成功了
然後我們通過navicat來連線mysql的服務,這個時間可能連線不上服務,我們需要給相應的用授權
GRANT ALL PRIVILEGES ON .
FLUSH PRIVILEGES;
如下圖就連線成功了mysql
現在我們解決hive的jar包,通過tar -zxvf hive-1.2.2-bin.tgz -C /apps/hive/
然後進入hive的目錄中找到hive的配置檔案,通過vim 來新建hive的元資料資訊庫的配置檔案,vim hive-site.xml
vim hive-site.xml的具體配置資訊如下
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop04:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> <description>username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>root123</value> <description>password to use against metastore database</description> </property>
因為hive在啟動跟用的時間會連線mysql服務,所有我們需要將mysql的驅動jar包拷貝到hive的lib目錄下cp /etc/java/mysqljar/ mysql-connector-java-5.1.39.jar /apps/hive/lib/
這個時間我們就可以啟動hive了,進入bin目錄下,通過nohup ./hiveserver2 &在後臺啟動hive的服務端我們就可以任意通過各種客戶端去連線操作hive了
我們可以在hdfs行hive 的具體儲存資料的路徑跟具體資料
我們在我們的開發工具idea中新建一個專案叫hive on spark ,這個時間我們通過spark程式去操作hive了,需要把剛剛的hive配置檔案拷貝到配置檔案下如下圖所示
我們通過spark程式來新建一個表這個時間會報錯,說使用者的許可權不足,這個時間我們需要偽裝自己本機的使用者為root使用者去操作hive,報錯如下
我們通過hadoop中的一些引數來偽裝自己的身份,如圖
這個時間可以可以建立成功了這個表,如圖程式碼中有t_p02表的建立,程式碼遠行成功,我們看看是否遠行成功了,去hdfs的儲存目錄就知道了,如下
成功了我們的hive on spark程式
上面上建立表成功,我們來匯入資料吧,比如
192.168.159.11,2018-09-28,50000
192.168.159.123,2018-09-28,10000
192.168.159.11,2018-09-25,50000
192.168.159.123,2018-09-26,10000
192.168.159.11,2018-09-24,50000
192.168.159.123,2018-09-28,10000
192.168.159.16,2018-09-23,50000
192.168.159.133,2018-09-28,10000
192.168.159.11,2018-09-28,50000
192.168.159.193,2018-09-20,20000
192.168.159.11,2018-09-22,90000
192.168.159.83,2018-09-21,40000
通過spark程式把原始資料處理了,就寫入hive如下圖程式碼
Hive on spark 的遠行圖
我們在在讀取剛剛的資料,就這樣我們的hive on spark程式就圓滿成功了
其實hive我們完全可以不用hive的服務來支援,我們可以完全脫離hive來利用spark操作hive,敬請期待,下篇部落格文章的出現,如果喜歡樓主了,記得為我點贊,謝謝,有什麼問題請留言,謝謝!!!