Kettle8.2实现抽取文件到Hive
Kettle8.2实现抽取文件到Hive一、Hadoop2.7.3安装(安装略)二、Hive的安装及准备工作1、Hive的安装(本地模式)2、启动hiveserver2服务3、创建weblogs表三、案例演示3.1 准备工作3.2 Kettle作业创建与配置四、总结说明:环境:Kettle8.2+虚拟机+Hadoop2.7.3+Hive2.3.3目标:利用Kettle将本地文件抽取到Hive中用户
Kettle8.2实现抽取文件到Hive
说明:
- 环境: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内部表中,不过整个过程相对编程又有些简单,总之,一句话:工具能好用,能帮助你就可以了!!!!
更多推荐
所有评论(0)