说明:

  • 环境:Kettle8.2+虚拟机+Hadoop2.7.3+Hive2.3.3
  • 目标:利用Kettle将本地文件抽取到Hive中
  • 用户:虚拟机root用户安装所有环境(为了方便,生产环境自行更改)

一、Hadoop2.7.3安装(安装略)


  • Hadoop的安装请查看我的其他博客
  • 做下列实验前需要确保Hadoop已经启动

二、Hive的安装及准备工作


1、Hive的安装(本地模式)

说明:本案例使用Hive本地模式,读者自行安装MySQL(该案例使用MySQL5.7,读者自行选择)
安装步骤:

  • 上传apache-hive-2.3.3-bin.tar.gz到/tools

  • 解压安装到/training目录下,解压安装命令如下:

    tar -zxvf apache-hive-2.3.3-bin.tar.gz -C ~/training/
    
  • 配置环境变量,执行: vi ~/.bash_profile,添加如下

    export HIVE_HOME=/training/apache-hive-2.3.3-bin
    export PATH=$HIVE_HOME/bin:$PATH
    
  • 环境变量生效,执行:source ~/.bash_profile

  • 配置hive-site.xml,进入hive-site.xml所在目录,执行:vi hive-site.xml,需要修改的参数内容如图:在这里插入图片描述
    在hive-site.xml中找到对应的部分进行修改,参考如下:

     <property>
     	<name>javax.jdo.option.ConnectionURL</name>
     	<value>jdbc:mysql://localhost:3306/hive?useSSL=false</value>
     </property>
     
     <property>
     	<name>javax.jdo.option.ConnectionDriverName</name>
     	<value>com.mysql.jdbc.Driver</value>
     </property>
     
     <property>
     	<name>javax.jdo.option.ConnectionUserName</name>
     	<value>hiveowner</value>
     </property>
     
     <property>
     	<name>javax.jdo.option.ConnectionPassword</name>
     	<value>Sjm_123456</value>
     </property>
    
  • 上传MySQL驱动到hive安装路径下的/lib目录下,注意一定要使用高版本的MySQL驱动(5.1.43以上的版本),如我的路径是/training/apache-hive-2.3.0- bin/lib目录下在这里插入图片描述

  • 初始化MySQL,
    执行:schematool -dbType mysql -initSchema
    执行成功的日志信息:
    Starting metastore schema initialization to 2.3.0
    Initialization script hive-schema-2.3.0.mysql.sql
    Initialization script completed
    schemaTool completed
    在这里插入图片描述

2、启动hiveserver2服务

  • 后台方式启动,执行:hive --service hiveserver2 &
  • 查看进程: 在这里插入图片描述
    或者
    在这里插入图片描述

3、创建weblogs表

  • 启动hive客户端cli,执行:hive ,进入到hive cli页面创建表
  • 创建表SQL:
    create table weblogs (
    client_ip string,
    full_request_date string,
    day string,
    month string,
    month_num int,
    year string,
    hour string,
    minute string,
    second string,
    timezone string,
    http_verb string,
    uri string,
    http_status_code string,
    bytes_returned string,
    referrer string,
    user_agent string)
    row format delimited fields terminated by '\t';
    
    创建时的截图:
    在这里插入图片描述
    注意: 上述创建表所在的位置是默认的数据库default,创建表成功,请查看下hdfs上的目录结构,如下所示,代表hive成功创建一张表名为weblogs
    在这里插入图片描述

三、案例演示


3.1 准备工作

  • 数据源下载并上传到虚拟机中,下载地址如下:
    https://download.csdn.net/download/sujiangming/15602824
    
  • 在hdfs创建目录,执行如下命令:
    hdfs dfs -mkdir -p /user/pdi/weblogs/parse
    
  • 上传weblogs_parse.txt到/user/pdi/weblogs/parse上,执行如下命令:
    hdfs dfs -put weblogs_parse.txt /user/pdi/weblogs/parse/
    

3.2 Kettle作业创建与配置

  • 创建作业,选择对应的组件(依赖Hadoop Copy Files)
    在这里插入图片描述

  • 配置Hadoop Cluster,可以参考《Kettle8.2与Hadoop2.7.3集成》博文中的相关内容,地址:https://blog.csdn.net/sujiangming/article/details/114338012

  • 配置Hadoop Copy Files组件,配置如下
    在这里插入图片描述
    注意: 截图中,remote_hadoop指Hadoop集群名称,需要先配置

  • 运行验证
    运行:
    验证:
    1、查看Kettle中执行结果:
    在这里插入图片描述
    2、hdfs上查看,发现多出了一个文件
    /user/hive/warehouse/weblogs/weblogs_parse.txt
    在这里插入图片描述
    3、查看hive的数据库表中有数据了,查看方法:执行 hive 进入hive cli,然后执行SQL语句即可,设置查询时显示表中的字段名称及其查看前10条记录,SQL如下:

    set hive.cli.print.header=true;
    select * from weblogs limit 10;
    

    在这里插入图片描述

四、总结


利用Kettle实现将本地文件抽取到Hive这个方法有些麻烦,因为还需要先将文件上传至HDFS上,然后通过读取HDFS上的数据再加载到Hive内部表中,不过整个过程相对编程又有些简单,总之,一句话:工具能好用,能帮助你就可以了!!!!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐