最近操做了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
复制代码