拉链表数据的导入步骤
数据导入
mysql
本地准备一张表
弄点数据
kettle
通过kettle导入数据到集群,先转换导入mysql数据
双击这个表输入
出现了一个界面,点击新建创建mysql连接
点击下面的查询sql语句,然后如果你的mysql配置正确,就会出现数据库中表的选择
选择是的,就会写出你的mysql中的具体字段,否就默认是 *
不放心的可以点击下面的预览,直接查询出mysql的数据
然后去核心对象的输出中,找到表输出
把配置填好了,随便选一个你的hive数据库,然后准备在这里建表了,可以参考我的配置,下面依然有测试可以让你安心
目标表你自己直接写一个名字,然后选择下面的sql,可以让kettle帮我们创建表
我这里是添加了一个 名为dt的分区字段,注意分隔符的设置,要与你的数据库文件中的分割方式一致才行
执行完毕后,会有日志信息,提示你成功后者失败
之后,这个表输出就没有用了,我们可以选择删除它,然后选择直接输入到hdfs中
设置你的集群继承kettle,这里不介绍了,然后设置输入到hdfs的具体位置
分隔符,编码格式,注意,下面的那个头部钩子要去掉,我这里贴图错误
设置新增的字段,不要默认,可以按照我的配置
生成在hdfs中的数据格式
hive
刚刚是通过kettle创建了hive表,而且还将mysql数据导入了hdfs中,下面将hdfs中的数据导入hive
方法一:
生成的数据通过hive命令行直接导入,因为我用beeline链接的hive,所以是这样的格式
1 | load data inpath '/lalian_test/ls01.txt' into table ls01 partition(dt='2020-01-01') |
方法二:
kettle输出可以直接输出到集群环境中的hive储存目录下,但是注意你要自己指定好分区,而且你创建的表必须是分区表
数据写入到表中之后,表中查询没有数据,这是因为你的hdfs目录中有分区信息,但是hive的元数据中还没有,所以可以通过两种方式解决:
1 | alter table add if not exists partition(dt='2020-01-01') location '2020-01-01'; |
1 | msck repair table 表名; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ls!
评论