• sqoop job作业介绍及其操作


    sqoop job作业介绍
    语法
    以下是创建Sqoop作业的语法。

    $ sqoop job (generic-args) (job-args)
    [-- [subtool-name] (subtool-args)]

    $ sqoop-job (generic-args) (job-args)
    [-- [subtool-name] (subtool-args)]
     
    创建作业(–create)
    在这里,我们创建一个名为myjob,这可以从RDBMS表的数据导入到HDFS作业。下面的命令用于创建一个从DB数据库的employee表导入到HDFS文件的作业。

    bin/sqoop job --create myjob1 -- import --connect jdbc:mysql://node03:3306/userdb
    --username root
    --password 123456
    --target-dir /sqoopresult555
    --table emp --m 1

    注意import前要有空格
     
    验证作业 (–list)
    ‘–list’ 参数是用来验证保存的作业。下面的命令用来验证保存Sqoop作业的列表。

    bin/sqoop job --list
     它显示了保存作业列表。

    Available jobs:
    myjob
     
    检查作业(–show)
    ‘–show’ 参数用于检查或验证特定的工作,及其详细信息。以下命令和样本输出用来验证一个名为myjob的作业。

    bin/sqoop job --show myjob
     
    它显示了工具和它们的选择,这是使用在myjob中作业情况。

    Job: myjob
    Tool: import Options:
    ----------------------------
    direct.import = true
    codegen.input.delimiters.record = 0
    hdfs.append.dir = false
    db.table = employee
    ...
    incremental.last.value = 1206
    ...
     
    执行作业 (–exec)
    ‘–exec’ 选项用于执行保存的作业。下面的命令用于执行保存的作业称为myjob。

    bin/sqoop job --exec myjob

    sqoop需要输入mysql密码

     
    它会显示下面的输出。

    10/08/19 13:08:45 INFO tool.CodeGenTool: Beginning code generation
    ...
     
    job的免密输入
    sqoop在创建job时,使用–password-file参数,可以避免输入mysql密码,如果使用–password将出现警告,并且每次都要手动输入密码才能执行job,sqoop规定密码文件必须存放在HDFS上,并且权限必须是400。

    #在mymysql.pwd中追加MySQL密码
    echo -n "123456" > mymysql.pwd
    #创建保存密码文件的目录
    hadoop fs -mkdir -p /input/sqoop/pwd/
    #把密码文件放入该目录中
    hadoop fs -put mymysql.pwd /input/sqoop/pwd/
    #修改文件权限
    hadoop fs -chmod 400 /input/sqoop/pwd/mymysql.pwd
     
    检查sqoop的sqoop-site.xml是否存在如下配置:
    <property>
    <name>sqoop.metastore.client.record.password</name>
    <value>true</value>
    <description>If true, allow saved passwords in the metastore.
    </description>
    </property> 
    创建sqoop job
    在创建job时,使用–password-file参数

    bin/sqoop job --create myjob2 -- import --connect jdbc:mysql://node-1:3306/userdb
    --username root
    --password-file /input/sqoop/pwd/mymysql.pwd
    --target-dir /sqoopresult666
    --table emp --m 1 

    执行job
    通过命令

    sqoop job -exec myjob1
    1
    如果password文件格式错误会有如下提示:
    ERROR manager.SqlManager: Error executing statement: java.sql.SQLException: Access denied for user ‘root’@‘spark220’ (using password: YES)

    ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: No columns to generate for ClassWriter at org.apache.sqoop.orm.ClassWriter.generate(ClassWriter.java:1652)


    ————————————————
    版权声明:本文为CSDN博主「fly_234」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_42917938/article/details/96432917

  • 相关阅读:
    Mysql添加用户和数据库
    Ubuntu Apache vhost不执行php小记
    buff/cache内存占用过多
    yii2 返回json和文件下载
    yii2 activeform 替換 form-gruop
    VSCode+Ionic+Apache Ripple开发环境搭建
    安装ionic出现node-sass无法下载的解决方法
    VS2015 + Cordova Html5开发使用Crosswalk Web引擎
    visual studio 2015 + Cordova 开发环境搭建
    ADSL自动更换IP地址源代码
  • 原文地址:https://www.cnblogs.com/javalinux/p/14929977.html
Copyright © 2020-2023  润新知