2、在kettle中设置Active shim,在工具打开“hadoop distribution”,选择hdp。将hadoop配置文件hdfs-site.xml、core-site.xml拷贝至本地.\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp23\下,修改本地core-site文件内fs.defaultFS的值,使用hdfs://192.168.85.129:8020。
3、配置hadoop cluster连接,在作业或转换“主对象树”选中“hadoop cluster”,右击“new cluster”,填写相关信息。遇到本机用户不能访问hdfs下/user目录权限,在/user目录新建本机用户zhengyuan目录,并授予zhengyuan用户拥有目录权限,参考: https://blog.csdn.net/weinierzui/article/details/77931346 ,测试ok保存。
4、新建转换,用hadoop file input组件访问hdfs,数据文件已传至zhengyuan目录下。在内容页签,设置分隔符为tab,格式选unix,在字段页签,加入读取数据的各列的名称、属性信息,这些列名和后面接数组件的字段配置映射时用到。在文件页签-显示文件内容、字典页签-预览记录,多可以浏览数据文件内容,表明配置ok。
5、kettle加个表输出组件,配置接出数据源、数据表,配置映射,即可执行同步,将hdfs文件数据解析同步存至外部数据源,比如mysql。此处只测了数据可以同步,生产中还需考虑调度及增量同步。
主要有三种方法:1、Put API
Put API可能是将数据快速导入HBase表的最直接的方法。但是在导入【大量数据】时不建议使用!但是可以作为简单数据迁移的选择,直接写个代码批量处理,开发简单、方便、可控强。
2、MapReduce Job
推荐使用sqoop,它的底层实现是mapreduce,数据并行导入的,这样无须自己开发代码,过滤条件通过query参数可以实现。
Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将MySQL中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到Mysql中。
参考Index of /docs。
采用如下命令:sqoop import
--connect jdbc:mysql://localhost/db
--username root -P
--table mysql_order
--columns "id,name"
--hbase-table hbase_order
--column-family f
--hbase-row-key id
--query "select id,name from mysql_order where..."
-m 1
3、采用Bulk load装载数据
bulk-load的作用是用mapreduce的方式将hdfs上的文件装载到hbase中,对于海量数据装载入hbase非常有用。
需要将MySQL的表数据导出为TSV格式(因为后面使用Import TSV工具),还需要确保有一个字段可以表示HBase表行的row key。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)