Kettle (三):mysql导入hive 使用kettle将mysql中的数据导入hive,从而实现数据迁移。
1.Centos7.4 2.CDH5.7.0 3.Kettle 8.0 4.JDK1.8
1. 建立mysql数据库连接 (1) 新建mysql_local的数据库连接 (2) 输入mysql对应的信息 (3) 点击“测试”,连接成功后,点击“确认”
2. 建立hadoop连接 (1) 新建hadoop连接 (2) 配置hdfs连接信息,因为暂时没有zookeeper和oozie等,所以不用配置 (3) 点击“测试”,会依据(2)中填写信息,回复连接结果 结果连接成功 3. 创建连接hive的连接 (1) 服务器开启hiveserver2,从而客户端连接hive (2) 在hive根目录下 bin/hive --service hiveserver2 (3) 配置与kettle相关jar包 参考:https://blog.csdn.net/u010886217/article/details/89509323 (4) 新建hiveserver2的数据库连接 (5) 配置hiveserver2的相关信息 (6) 点击“测试”连接hive,成功后,点击“确定”保存连接
1. 实现功能 (1) 在hive中创建mysql表对应的表结构 (2) 将mysql中表导出为txt格式,保存到hdfs临时目录 2. 创建mysql表输入 选择mysql数据库连接,并且选择需要转移的student表
3. 创建hive表输出步骤,完成建立对应表 (1)选择hive表连接和转移到hive中表的名称,点击SQL
(3) 修改自动生成的SQL语句
CREATE TABLE student_mysql ( id INT, name STRING, age INT) row format delimited fields terminated by ';' ;(4) 单击“确定”,此时hive中建表成功。 (5) 使mysql-》hive的连接失效,从而不影响后续操作。 点击连线,使之变为灰色 4. mysql表导出为txt文档保存在hdfs (1)引入“Hadoop file output”步骤
(2)输入hdfs相应信息,修改“文件”框 (3) 修改“内容”框 (4) 修改“字段”框 先点击“获取字段”,然后点击“最小宽度”,否则按照默认宽度,输出txt文件的文字宽度太大。
(5) 运行转换,使mysql表转换到hdfs上 结果:
1. 创建job,拖入start、转换、Hadoop copy files组件 2. 修改“转换”,将四中的转换填写入 3. 修改“Hadoop copy files”组件 设置源文件路径和目标路径 4. 执行job
1.启动hive
bin/hive2.查询
hive (test)> select * from student_mysql; OK student_mysql.id student_mysql.name student_mysql.age 1 zhangsan 4 2 lisi 5 Time taken: 0.286 seconds, Fetched: 2 row(s) hive (test)> select student_mysql.age from student_mysql; OK student_mysql.age 4 5 Time taken: 0.074 seconds, Fetched: 2 row(s)
