• sqoop上传数据到hdfs,并用hive管理数据。


    sqoop导入mysql数据表到HDFS中
    sqoop import --connect jdbc:mysql://master:3306/test --username root --password root --table person
    --target-dir "/root/sqoop" 指定上传到hdfs指定的目录
    --fields-terminated-by " " 指定生成文件的分隔符
    HIVE创建外部表,管理数据。 CREATE EXTERNAL TABLE person( id int, name string, sex string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION '/user/root/person';
    mysql> select * from person;
    +----+----------+-------+
    | id | username | sex   |
    +----+----------+-------+
    |  1 | tom      | man   |
    |  2 | jack     | wemen |
    +----+----------+-------+
    2 rows in set (0.00 sec)
    hive> select * from person;
    OK
    1       tom     man
    2       jack    wemen
    Time taken: 1.545 seconds, Fetched: 2 row(s)

    第一类:数据库中的数据导入到HDFS上

    # sqoop import --connect jdbc:mysql://hdp-server-01:3306/baba --username root --password root --table bbs_detail

                 

                  指定输出路径、指定数据分隔符

                  # sqoop import --connect jdbc:mysql://hdp-server-01:3306/baba --username root --password root --table bbs_detail --target-dir '/sqoop/td' --fields-terminated-by ' '

                 

                  指定MapTask数量 -m

                  #sqoop import --connect jdbc:mysql://hdp-server-01:3306/baba --username root --password root  --table bbs_detail --target-dir '/sqoop/td1' --fields-terminated-by ' ' -m 1

                  增加where条件, 注意:条件必须用引号引起来

                  # sqoop import --connect jdbc:mysql://hdp-server-01:3306/baba --username root --password root  --table bbs_detail --where 'id>30' --target-dir '/sqoop/td2' --fields-terminated-by '01' -m 1

                  增加query语句(使用 将语句换行)

                  sqoop import --connect jdbc:mysql://hdp-server-01:3306/baba --username root --password root

    --query 'SELECT id,order_id,product_id FROM bbs_detail where id > 30 AND $CONDITIONS' --split-by bbs_detail.id --target-dir '/sqoop/td3'           

                  注意:如果使用--query这个命令的时候,需要注意的是where后面的参数,AND $CONDITIONS这个参数必须加上

                  而且存在单引号与双引号的区别,如果--query后面使用的是双引号,那么需要在$CONDITIONS前加上即$CONDITIONS

                  如果设置map数量为1个时即-m 1,不用加上--split-by ${tablename.column},否则需要加上

                 

    ***从数据库中导入数据到hive

    sqoop import --hive-import --connect jdbc:mysql://hdp-server-01:3306/baba --username root --password root --table bbs_detail

           第二类:将HDFS上的数据导出到数据库中

                  sqoop export --connect jdbc:mysql://hdp-server-01:3306/test  --username root --password root --export-dir '/myorder/data' --table myorder --columns id,order_id --fields-terminated-by ','  -m 2

    注意:以上测试要配置mysql远程连接

             GRANT ALL PRIVILEGES ON mytest.* TO 'root'@'192.168.0.104' IDENTIFIED BY 'itcast' WITH GRANT OPTION;

             FLUSH PRIVILEGES;

            

             GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'itcast' WITH GRANT OPTION;

             FLUSH PRIVILEGES

  • 相关阅读:
    [git] git 的基本认知
    [Java] Java IO Files
    [Java] Java IO 概况
    [Java] JavaMail 发送带图片的 html 格式的邮件
    [Java] HashMap 导致的高 CPU 使用率
    [Struts] Hello World Demo
    [Hibernate] 注解映射例子
    [Hibernate] List 映射例子
    cmd的xcopy命令
    wpf custom control
  • 原文地址:https://www.cnblogs.com/luozeng/p/8900577.html
Copyright © 2020-2023  润新知