本帖最后由 desehawk 于 2014-11-4 16:09 编辑 附上文章: sqoop:开源工具,允许用户将数据从关系型数据库中抽取数据到Hadoop中,用于进一步处理,得到分析结果后,sqoop还可以将分析结果数据导回到数据库中,供其他客户端使用。 sqoop主要包含工具: import: 会运行一个mapreduce作业,该作业会连接mysql数据库并读取表中的数据,默认该作业会运行4个map任务来加速导入过程,每个任务都会将其导入的数据写到一个单独的文件,但所有4个文件都位于同一个目录中。 codegen:生成源代码,但并不执行导入操作 1、从数据库导入到hive,可以将三个步骤(将数据导入HDFS,创建hive表,将HDFS中数据导入hive)缩减为一个(通过sqoop直接生成hive表,并导入数据) sqoop import --connect jdbc:oracle:thin:@192.168.56.111:1521:DBNAME --username USERNAME --password PASSWORD --verbose -m 1 --table TABLENAME --hive-import 这里注意用户名和表名称一定要大写,不然会报如下错误: ERROR tool.ImportTool: Imported Failed: Attempted to generate class with no columns! 另外看到一篇很好的文章: 来源:http://www.zihou.me/html/2014/01/28/9114.html 内容如下: 1. 概述 本文档主要对SQOOP的使用进行了说明,参考内容主要来自于Cloudera SQOOP的官方文档。为了用中文更清楚明白地描述各参数的使用含义,本文档几乎所有参数使用说明都经过了我的实际验证而得到。 2. codegen 将关系数据库表映射为一个java文件、java class类、以及相关的jar包,作用主要是两方面: 1、 将数据库表映射为一个Java文件,在该Java文件中对应有表的各个字段。 2、 生成的Jar和class文件在metastore功能使用时会用到。 基础语句: sqoop codegen –connect jdbc:mysql://localhost:3306/hive –username root –password 123456 –table TBLS2
3. create-hive-table 生成与关系数据库表的表结构对应的HIVE表 基础语句: sqoop create-hive-table –connect jdbc:mysql://localhost:3306/hive -username root -password 123456 –table TBLS –hive-table h_tbls2
4. eval 可以快速地使用SQL语句对关系数据库进行操作,这可以使得在使用import这种工具进行数据导入的时候,可以预先了解相关的SQL语句是否正确,并能将结果显示在控制台。 查询示例: sqoop eval –connect jdbc:mysql://localhost:3306/hive -username root -password 123456 -query “SELECT * FROM tbls LIMIT 10″ 数据插入示例: sqoop eval –connect jdbc:mysql://localhost:3306/hive -username root -password 123456 -e “INSERT INTO TBLS2 VALUES(100,1375170308,1,0,’hadoop’,0,1,’guest’,’MANAGED_TABLE’,’abc’,’ddd’)” -e、-query这两个参数经过测试,比如后面分别接查询和插入SQL语句,皆可运行无误,如上。 5. export 从hdfs中导数据到关系数据库中 sqoop export –connect jdbc:mysql://localhost:3306/hive –username root –password 123456 –table TBLS2 –export-dir sqoop/test
6. import 将数据库表的数据导入到hive中,如果在hive中没有对应的表,则自动生成与数据库表名相同的表。 sqoop import –connect jdbc:mysql://localhost:3306/hive –username root –password 123456 –table user –split-by id –hive-import –split-by指定数据库表中的主键字段名,在这里为id。
|