zoukankan      html  css  js  c++  java
  • 使用Sqoop将MySQL与HDFS数据导入导出

    一、拷贝mysql数据表到hdfs上

    1.确保mysql可以远程连接, 防火墙等已关闭或开端口, hadoop已启动, hdfs可访问
    2.确保hdfs上不存在目标文件夹, sqoop会自动生成文件夹, 若已存在则报错,要么加上--delete-target-dir
    3.命令如下, 参数自行修改, mysql所在IP为192.168.203.7, 用户名密码为root, Mysql数据表teacher, hdfs目录为/mydb//teacher


    命令一、一般上传

    sqoop import --connect jdbc:mysql://192.168.203.7:3306/test --username root --password root --columns id,name --table teacher --target-dir /mydb/teacher -m 1 --delete-target-dir

    --table teacher:连接的是哪个表
    --target-dir /teacher:表示输出路径
    -m 1:表示指定主键--输出一个文件-指定map个数
    --delete-target-dir:删除已经存在的输出文件


    命令二、使用sql语句

    sqoop import --connect jdbc:mysql://192.168.203.7:3306/test --username root --password root --query 'select * from teacher where id>3 and $CONDITIONS' --target-dir /mydb/teacher -m 1 --delete-target-dir

    (将SQL数据库test中的teacher表中id大于3的数据存入hdfs上的teacher目录上)


    命令三、追加数据到已存在表中之id

    sqoop import --connect jdbc:mysql://192.168.203.7:3306/test --username root --password root --table teacher --target-dir /mydb/teacher -m 1 --check-column id --incremental append --last-value 7

    将SQL数据库test中的teacher表中id大于7的数据追加hdfs上的teacher目录上


    命令四、加数据到已存在表中之时间:lastmodified

    sqoop import --connect jdbc:mysql://192.168.203.72:3306/test --username root --password 123 --table teacher --target-dir /teacher1 -m 1 --check-column last_modified --incremental lastmodified --last-value '2018-10-04 16:37:31'

    前提:你表中的数据有datetime类型的字段,安装这个字段追加。

    将SQL数据库test中的teacher表中last_modified大于'2018-10-04 16:37:31'的数据加hdfs上的teacher1目录上,

    用时间追加的数据保存在不是一个文件中


    二、导入HDFS数据到MySQL数据库表中

    1. 在mysql中创建对应字段的数据库表,测试用student
    2. HDFS中的文本文件以,作分隔符分割字段,文件名student.txt
    3. 命令如下,参数依次为mysql数据库地址,用户名密码,mysql数据库表名,HDFS文件所在位置,分隔符

    sqoop export --connect jdbc:mysql://192.168.203.7:3306/test --username root --password root --table student --export-dir /student.txt --fields-terminated-by ',';


    三、通过sqoop查看本地MySQL信息

    sqoop list-tables -connect jdbc:mysql://192.168.203.7:3306/test --username root --password root

    表示查看test这个数据库中的所有表信息,如下图


    sqoop list-databases -connect jdbc:mysql://192.168.203.7:3306/ --username root --password root
     

    表示查看mysql所有数据库,如下图类似

  • 相关阅读:
    使用Kmeans进行聚类,用calinski_harabaz_score评价聚类效果
    使用Autoencoder进行降维
    MongoDB 之 MongoDB简介与安装 MongoDB 1
    我的淘宝客之路 起步
    Excel批量导入Orale
    CAB压缩包文件制作
    策略模式
    设计OA系统的用户角色权限分配
    java语言中的限定词
    jQuery LigerUI使用培训
  • 原文地址:https://www.cnblogs.com/pigdata/p/10305592.html
Copyright © 2011-2022 走看看