简单的Sqoop安装、使用示例Hadoop相关的东西在版本兼容性方面都很麻烦,这个例子里用的Sqoop是1.4.2, Hadoop
简单的Sqoop安装、使用示例
Hadoop相关的东西在版本兼容性方面都很麻烦,这个例子里用的Sqoop是1.4.2, Hadoop是Apache的1.0.4; 本例介绍的方法未必适用其他版本的Sqoop和Hadoop.
1.安装Sqoop
下载、解压
略
编译
$ant -Dhadoopversion=100 #这里的100表示编译后的Sqoop将与Hadoop 1.0.*结合使用
配置$HADOOP_HOME变量Sqoop不认$HADOOP_INSTALL变量,只认$HADOOP_HOME, 所以要把$HADOOP_HOME配置到环境变量中
试运行一下$sqoop version
2.从mysql中导入数据到HDFS先把HADOOP启起来MapReduce服务和HDFS服务都要启起来
把mysql jdbc驱动丢到sqoop的类目录下$cp mysql-connector-java-5.1.6.jar /home/kent/dev/hadoop/sqoop-1.4.2/lib/
执行sqoop import$sqoop import --connect jdbc:mysql://localhost/kent --username kent --password *** --table user --verbose --target-dir /sqoop/user --fields-terminated-by '\0001'##导出后的hdfs文件将在/sqoop/user路径下##导出后的hdfs文件中列之间将以'\0001'分隔
观察一下控制台输出,
a. 生成了 /tmp/sqoop-kent/compile/b54fd32800d1ddb50c259c709464a35c/user.java
b. user.java被编译打包到了/tmp/sqoop-kent/compile/b54fd32800d1ddb50c259c709464a35c/user.jar
c. 观察Hadoop的控制台,可以看到有新的MapReduce Job产生, 并且这个job只有map任务,没有reduce任务
看下导入后的文件$hadoop dfs -cat /sqoop/user/part-m-00000
使用direct模式从mysql中导入数据$sqoop import --connect jdbc:mysql://localhost/kent --username kent --password *** --table user --verbose --target-dir /sqoop/userdirect
--direct #最后加上--direct参数,sqoop将使用mysqldump工具来读取数据
3.把刚刚导入的数据从HDFS中导回到mysql在mysql中新建user2表以容纳数据建表时可以照抄user表的ddl
执行sqoop export$sqoop export --connect jdbc:mysql://localhost/kent --username kent --password *** --table user2 --verbose --export-dir /sqoop/user --input-fields-terminated-by '\0001'
观察一下控制台输出,也会发现有java,jar和mapreduce job被产生
看下表中是否有数据$select * from user2;
疑难解决$sudo apt-get install asciidoc #没有这个工具产生不了文档$ant docs -Dhadoopversion=100
查看文档: file:///home/kent/dev/hadoop/sqoop-1.4.2/build/docs/index.html