最近操做了hive進行數據統計,使用下面總結的步驟能夠快速上手這個數據庫java
完整案例代碼已上傳github: github.com/neatlife-le…mysql
能夠使用docker一鍵啓動參考:github.com/big-data-eu…git
git clone https://github.com/big-data-europe/docker-hive.git hive
cd hive
docker-compose pull
docker-compose up -d
複製代碼
執行docker-compose ps
查看啓動效果 github
而後能夠使用命令: docker-compose exec hive-server /opt/hive/bin/beeline -u jdbc:hive2://localhost:10000sql
進入hive命令行終端進行操做了,常見的sql語句通常都支持,好比show databases
show tables
desc tableName
等,操做效果以下: docker
在mysql中準備須要導入hive的數據,能夠自行生成,這裏使用已經存在的user_words表,內容以下shell
sqoop下載地址參考:apache-mirror.8birdsvideo.com/sqoop/1.4.7…數據庫
報java.security.AccessControlException: access denied
須要修改/etc/java-8-openjdk/security/java.policy
添加下面的受權代碼apache
grant {
permission javax.management.MBeanTrustPermission "register";
};
複製代碼
能夠把java.policy文件從docker中取出來,修改後再映射進去安全
而後修改docker-compose.yml掛載到hive server中,核心代碼以下
hive-server:
# ...
volumes:
- ./sqoop:/sqoop
- ./java.policy:/etc/java-8-openjdk/security/java.policy
複製代碼
sqoop從mysql讀取數據須要mysql的驅動,下載地址參考:dev.mysql.com/downloads/c… 把相應的jar包放到sqoop的lib目錄便可
而後把mysql中的
/sqoop/bin/sqoop import \
--connect jdbc:mysql://myip:3306/word_freq?useSSL=false \
--username root \
--password root \
--table user_words \
--hive-import \
--hive-overwrite --create-hive-table \
--hive-table default.user_words \
--delete-target-dir
複製代碼
上面的命令就是把mysql中的word_freq庫中的user_words表導入hive的default庫的user_words表中,執行效果以下
能夠看到"Hive import complete"就表示導入成功了
類型選擇Apache Hive
hive用的10000端口
下載驅動可能比較慢,能夠設置使用代理
單擊建立sql編輯器的圖標就能夠打開一個新的sql編輯器了,操做效果以下
執行sql語句,好比查詢出上面從mysql中導入的user_words表中的全部數據:SELECT * FROM user_words
這個DBeaver功能豐富,完整功能列表參考:github.com/dbeaver/dbe…
報Make sure HIVE_CONF_DIR is set correctly
是由於sqoop的lib目錄缺乏hive common庫
下載hive common放到sqoop的lib目錄參考:repo1.maven.org/maven2/org/…
執行sqoop時報safe mode關鍵詞的錯誤,須要關閉hdfs的安全模式
hdfs dfsadmin -safemode leave
複製代碼