Hadoop平台Sqoop组件使用示例

来源:互联网 发布:吴雨霏 吴哥窟 知乎 编辑:程序博客网 时间:2024/06/02 12:45
下面是自己学习中实际测试,环境(centOS、Sqoop 1.4.4.2.1.1.0-385、Hive 0.13.0.2.1.1.0-385):
  1. 查询mysql所有数据库:sqoop list-databases --connect "jdbc:mysql://localhost:3306/" --username root --password 123456
  2. 查询mysql数据库所有表:sqoop list-tables --connect "jdbc:mysql://localhost:3306/test" --username root --password 123456
  3. 将mysql的表结构导入到hive中:sqoop create-hive-table --connect "jdbc:mysql://localhost:3306/test" --table status--username root --password 123456 --hive-table status                                                                                                                                                   注:(1)--table status为mysql中的数据库status中的表, --hive-table status为hive中新建的表名称
  4. 将mysql中的表导入到hive:sqoop import --connect "jdbc:mysql://localhost:3306/test" --username root --password 123456 --table status --hive-import                                                                                                                                                                               注:(1)不管hive是否存在status表都会导入成功
  5. 将hive表导入到mysql中:sqoop export --connect jdbc:mysql://localhost:3306/test --username root --password 123456--table status --export-dir /apps/hive/warehouse/status --input-fields-terminated-by '\001'                                                                                   注:(1)--export-dir指出hive中status表在hdfs上的存储位置,可以查看hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的数据仓库的目录,所有的 Table 数据(不包括 External Table)都保存在这个目录中。                                                                                             (2)--input-fields-terminated-by 指出hive的表字段分隔符,hive默认分隔符为'\001'。                                                                                 (3)将hive中的表导入到mysql中时,如果导入的数据的主键和mysql中的主键相同则导入失败(实际测试hadoop执行map-reduce程序执行到map-100%时一直卡主)                                                                                                                                                                               (4)导出的时候mysql中必须已经存在对应的表                                          
  6. 将mysql表导入到hdfs中:sqoop import --connect jdbc:mysql://localhost:3306/sqoop_test --username root --password 123456 --table status -m 1 --target-dir /sqoop_mysql_to_hdfs/                                                                                                                                 注:(1)-m参数指定是用map数量                                                                                                                                                                   (2)--target-dir参数指定存放在hdfs上目的文件目录,使用hadoop fs -cat /sqoop_mysql_to_hdfs/part-m-00000查看HDFS上文件信息
  7. 将hdfs文件导入到mysql中:sqoop export --connect jdbc:mysql://localhost:3306/sqoop_test --username root --password 123456 --table status --input-fields-terminated-by ',' --export-dir /sqoop_mysql_to_hdfs/part-m-00000 -m 1                                                注:(1)--input-fields-terminated-by 指出hdfs文件中存储的分隔符,示例查看命令:hadoop fs -cat /sqoop_mysql_to_hdfs/part-m-00000。                                                                                                                                                                                                         (2)将hdfs中的表导入到mysql中时,如果导入的数据的主键和mysql中的主键相同则导入失败(实际测试hadoop执行map-reduce程序执行到map-100%时一直卡主)                                                                                                                                                                               (3)导出的时候mysql中必须已经存在对应的表
0 0
原创粉丝点击