最近操作了hive进行数据统计,使用下面总结的步骤可以快速上手这个数据库
完整案例代码已上传github: https://github.com/neatlife-learn/myhive
获取可用的hive实例
可以使用docker一键启动参考:https://github.com/big-data-europe/docker-hive
git clone https://github.com/big-data-europe/docker-hive.git hive
cd hive
docker-compose pull
docker-compose up -d
执行docker-compose ps
查看启动效果
可以看到hive-server已经成功启动并在10000端口监听了
然后可以使用命令: docker-compose exec hive-server /opt/hive/bin/beeline -u jdbc:hive2://localhost:10000
进入hive命令行终端进行操作了,常见的sql语句一般都支持,比如show databases
show tables
desc tableName
等,操作效果如下:
使用sqoop导入mysql数据到hive
准备测试数据
在mysql中准备需要导入hive的数据,可以自行生成,这里使用已经存在的user_words表,内容如下
安装sqoop
sqoop下载地址参考:http://apache-mirror.8birdsvideo.com/sqoop/1.4.7/sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz
报java.security.AccessControlException: access denied
需要修改/etc/java-8-openjdk/security/java.policy
添加下面的授权代码
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的驱动,下载地址参考:https://dev.mysql.com/downloads/connector/j/
把相应的jar包放到sqoop的lib目录即可
执行mysql导入hive
然后把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"就表示导入成功了
使用DBeaver Enterprise进行数据统计
使用DBeaver连接hive
类型选择Apache Hive
hive用的10000端口
下载驱动可能比较慢,可以设置使用代理
操作表
单击创建sql编辑器的图标就可以打开一个新的sql编辑器了,操作效果如下
执行sql语句,比如查询出上面从mysql中导入的user_words表中的所有数据:SELECT * FROM user_words
可以看到成功从hive中查询出了user_words表的所有数据了
这个DBeaver功能丰富,完整功能列表参考:https://github.com/dbeaver/dbeaver/wiki
一些注意的点
报Make sure HIVE_CONF_DIR is set correctly
是因为sqoop的lib目录缺少hive common库
下载hive common放到sqoop的lib目录参考:https://repo1.maven.org/maven2/org/apache/hive/hive-common/3.1.1/hive-common-3.1.1.jar
执行sqoop时报safe mode关键词的错误,需要关闭hdfs的安全模式
hdfs dfsadmin -safemode leave
hive支持的select语法参考:<
参考资料
- https://blog.csdn.net/jmx_bigdata/article/details/98506875
- https://mvnrepository.com/artifact/org.apache.hive/hive-common/3.1.1
- https://stackoverflow.com/questions/51661049/error-hive-hiveconfig-could-not-load-org-apache-hadoop-hive-conf-hiveconf-make
- https://github.com/dbeaver/dbeaver/wiki/Apache-Hive