首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

容易的Sqoop安装、使用示例

2012-12-18 
简单的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

热点排行