三分钟上手hive进行数据统计

1,867 阅读2分钟

最近操作了hive进行数据统计,使用下面总结的步骤可以快速上手这个数据库

完整案例代码已上传github: github.com/neatlife-le…

获取可用的hive实例

可以使用docker一键启动参考:github.com/big-data-eu…

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下载地址参考:apache-mirror.8birdsvideo.com/sqoop/1.4.7…

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的驱动,下载地址参考:dev.mysql.com/downloads/c… 把相应的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功能丰富,完整功能列表参考: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

参考资料

  1. blog.csdn.net/jmx_bigdata…
  2. mvnrepository.com/artifact/or…
  3. stackoverflow.com/questions/5…
  4. github.com/dbeaver/dbe…