CDH5.9.0 +sqoop2 [1.99.5]数据传输

先添加sqoop2
这里写图片描述
然后选择sqoop2,然后就没有什么了完成后启动。
去/var/lib/下面添加mysql驱动

在执行

cd /opt/cloudera/parcels/CDH/lib/hadoop/client
sudo ln -s ../../hadoop-hdfs/lib/jackson-mapper-asl-1.8.8.jar 
sudo ln -s ../../hadoop-hdfs/lib/jackson-core-asl-1.8.8.jar 
`
 ``

之后就可以了

进到安装的机器上
执行sqoop2
进去shell、

sqoop:000> set server –host your.host.com –port 12000 –webapp sqoop

sqoop:000> show version –all
client version:
Sqoop 2.0.0-SNAPSHOT source revision 418c5f637c3f09b94ea7fc3b0a4610831373a25f
Compiled by vbasavaraj on Mon Nov 3 08:18:21 PST 2014
server version:
Sqoop 2.0.0-SNAPSHOT source revision 418c5f637c3f09b94ea7fc3b0a4610831373a25f
Compiled by vbasavaraj on Mon Nov 3 08:18:21 PST 2014
API versions:
[v1]
sqoop:000> help
For information about Sqoop, visit: http://sqoop.apache.org/

Available commands:
exit (\x ) Exit the shell
history (\H ) Display, manage and recall edit-line history
help (\h ) Display this help message
set (\st ) Configure various client options and settings
show (\sh ) Display various objects and configuration options
create (\cr ) Create new object in Sqoop repository
delete (\d ) Delete existing object in Sqoop repository
update (\up ) Update objects in Sqoop repository
clone (\cl ) Create new object based on existing one
start (\sta) Start job
stop (\stp) Stop job
status (\stu) Display status of a job
enable (\en ) Enable object in Sqoop repository
disable (\di ) Disable object in Sqoop repository

sqoop:000> show connector
+—-+————————+—————-+——————————————————+———————-+
| Id | Name | Version | Class | Supported Directions |
+—-+————————+—————-+——————————————————+———————-+
| 1 | hdfs-connector | 2.0.0-SNAPSHOT | org.apache.sqoop.connector.hdfs.HdfsConnector | FROM/TO |
| 2 | generic-jdbc-connector | 2.0.0-SNAPSHOT | org.apache.sqoop.connector.jdbc.GenericJdbcConnector | FROM/TO |
+—-+————————+—————-+——————————————————+———————-+

还有show link ,show job
创建link,job。的去官网这里不说了

再说下定时启动job
写一个java api

这个代码显示不一样。见谅吧

package com.lenovo.analyze.sqoopmtm;

import org.apache.sqoop.client.SqoopClient;
import org.apache.sqoop.model.MConnector;
import org.apache.sqoop.model.MDriverConfig;
import org.apache.sqoop.model.MFromConfig;
import org.apache.sqoop.model.MJob;
import org.apache.sqoop.model.MLink;
import org.apache.sqoop.model.MLinkConfig;
import org.apache.sqoop.model.MSubmission;
import org.apache.sqoop.model.MToConfig;
import org.apache.sqoop.submission.counter.Counter;
import org.apache.sqoop.submission.counter.CounterGroup;
import org.apache.sqoop.submission.counter.Counters;
import org.apache.sqoop.validation.Status;
public class MysqlToHDFS {

public static void main(String[] args) {
sqoopTransfer();
}
public static void sqoopTransfer() {
//初始化
String url =”http://ip:12000/sqoop/”;
SqoopClient client = new SqoopClient(url);
client.setServerUrl(url);

java.util.Random r=new java.util.Random();


int num=r.nextInt();
    //创建一个源链接 JDBC
    long fromConnectorId = 1;
    MLink fromLink =client.createLink(fromConnectorId);
    fromLink.setName("JDBC"+num);

// fromLink.setCreationUser(“liuwei”);
MLinkConfig fromLinkConfig =fromLink.getConnectorLinkConfig();
fromLinkConfig.getStringInput(“linkConfig.connectionString”).setValue(“jdbc:mysql://ip:3306/db_warehouse”);
fromLinkConfig.getStringInput(“linkConfig.jdbcDriver”).setValue(“com.mysql.jdbc.Driver”);
fromLinkConfig.getStringInput(“linkConfig.username”).setValue(“yonghu”);
fromLinkConfig.getStringInput(“linkConfig.password”).setValue(“888!@#”);
Status fromStatus =client.saveLink(fromLink);
System.out.println(fromStatus);
if(fromStatus.canProceed()) {
System.out.println(“创建JDBC Link成功,ID为:” + fromLink.getPersistenceId());
} else {
System.out.println(“创建JDBC Link失败”);
}

    //创建一个目的地链接HDFS
    long toConnectorId = 3;
    MLink toLink =client.createLink(toConnectorId);
    toLink.setName("HDFS"+num);
    toLink.setCreationUser("sqoop2");
    MLinkConfig toLinkConfig =toLink.getConnectorLinkConfig();
    System.out.println(toLinkConfig);
    toLinkConfig.getStringInput("linkConfig.uri").setValue("hdfs://ip:8020/");
    Status toStatus =client.saveLink(toLink);
    if(toStatus.canProceed()) {
    System.out.println("创建HDFS Link成功,ID为:" + toLink.getPersistenceId());
    } else {
    System.out.println("创建HDFS Link失败");
    }

    //创建一个任务
    long fromLinkId =fromLink.getPersistenceId();
    long toLinkId =toLink.getPersistenceId();
    MJob job = client.createJob(fromLinkId,toLinkId);
    job.setName("MySQL to HDFSjob"+num);
    job.setCreationUser("hadoop");
    //设置源链接任务配置信息
    MFromConfig fromJobConfig = job.getFromJobConfig();
    System.out.println("****"+fromJobConfig);
    fromJobConfig.getStringInput("fromJobConfig.schemaName").setValue("db_warehouse");
    fromJobConfig.getStringInput("fromJobConfig.tableName").setValue("T_TEST");
    fromJobConfig.getStringInput("fromJobConfig.partitionColumn").setValue("id");
   fromJobConfig.getStringInput("fromJobConfig.columns").setValue("id,age");
    MToConfig toJobConfig =job.getToJobConfig();
    System.out.println("===="+toJobConfig);

// toJobConfig.getEnumInput(“toJobConfig.outputFormat”).setValue(“TEXT_FILE”);
toJobConfig.getEnumInput(“toJobConfig.outputFormat”).setValue(“TEXT_FILE”);
toJobConfig.getEnumInput(“toJobConfig.compression”).setValue(“NONE”);
toJobConfig.getStringInput(“toJobConfig.outputDirectory”).setValue(“/user/sqoop2/”);
MDriverConfig driverConfig =job.getDriverConfig();
driverConfig.getIntegerInput(“throttlingConfig.numExtractors”).setValue(3);

    Status status = client.saveJob(job);
    System.out.println("===="+status);
    if(status.canProceed()) {
    System.out.println("JOB创建成功,ID为:"+ job.getPersistenceId());
    } else {
    System.out.println("JOB创建失败。");
    }



    //启动任务
    long jobId = job.getPersistenceId();
       System.out.println(jobId);

// long jobId = 4;
MSubmission submission =client.startJob(jobId);
System.out.println(“JOB提交状态为 : ” + submission.getStatus());
while(submission.getStatus().isRunning()&& submission.getProgress() != -1) {
System.out.println(“进度 : ” + String.format(“%.2f%%”, submission.getProgress() * 100));
//三秒报告一次进度
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}

    System.out.println("JOB执行结束... ...");
    System.out.println("Hadoop任务ID为:" + submission.getExternalJobId());
    Counters counters =submission.getCounters();
    if(counters != null) {
    System.out.println("计数器:");
    for(CounterGroup group : counters) {
    System.out.print("\t");
    System.out.println(group.getName());
    for(Counter counter : group) {
    System.out.print("\t\t");
    System.out.print(counter.getName());
    System.out.print(": ");
    System.out.println(counter.getValue());
    }
    }
    }
    if(submission.getError().getErrorSummary() != null) {
    System.out.println("JOB执行异常,异常信息为 : " +submission.getError());
    }
    System.out.println("HDFS通过sqoop传输数据到MySQL统计执行完毕");

    }
    }

package com.lenovo.analyze.sqoopmtm;

import org.apache.sqoop.client.SqoopClient;
import org.apache.sqoop.model.MDriverConfig;
import org.apache.sqoop.model.MFromConfig;
import org.apache.sqoop.model.MJob;
import org.apache.sqoop.model.MLink;
import org.apache.sqoop.model.MLinkConfig;
import org.apache.sqoop.model.MSubmission;
import org.apache.sqoop.model.MToConfig;
import org.apache.sqoop.submission.counter.Counter;
import org.apache.sqoop.submission.counter.CounterGroup;
import org.apache.sqoop.submission.counter.Counters;
import org.apache.sqoop.validation.Status;
public class HDFSToMysql {
public static void main(String[] args) {
sqoopTransfer();
}
public static void sqoopTransfer() {
//初始化
String url =”http://ip:12000/sqoop/”;
SqoopClient client = new SqoopClient(url);
int num=205;

    //创建一个源链接 HDFS
    long fromConnectorId = 3;
    MLink fromLink =client.createLink(fromConnectorId);
    fromLink.setName("HDFSconnector"+num);
    fromLink.setCreationUser("admln");
    MLinkConfig fromLinkConfig =fromLink.getConnectorLinkConfig();
    fromLinkConfig.getStringInput("linkConfig.uri").setValue("hdfs://ip-hadoop02:8020/");
    Status fromStatus =client.saveLink(fromLink);
    if(fromStatus.canProceed()) {
    System.out.println("创建HDFS Link成功,ID为:" + fromLink.getPersistenceId());
    } else {
    System.out.println("创建HDFS Link失败");
    }
    //创建一个目的地链接 JDBC
    long toConnectorId = 1;
    MLink toLink = client.createLink(toConnectorId);
    toLink.setName("JDBCconnector"+num);
    toLink.setCreationUser("admln");
    MLinkConfig toLinkConfig =toLink.getConnectorLinkConfig();
    toLinkConfig.getStringInput("linkConfig.connectionString").setValue("jdbc:mysql://ip/db_warehouse");
    toLinkConfig.getStringInput("linkConfig.jdbcDriver").setValue("com.mysql.jdbc.Driver");
    toLinkConfig.getStringInput("linkConfig.username").setValue("yonghu");
    toLinkConfig.getStringInput("linkConfig.password").setValue("9999!@#");
    Status toStatus =client.saveLink(toLink);
    if(toStatus.canProceed()) {
    System.out.println("创建JDBC Link成功,ID为:" + toLink.getPersistenceId());
    } else {
    System.out.println("创建JDBC Link失败");
    }

    //创建一个任务
    long fromLinkId =fromLink.getPersistenceId();
    long toLinkId =toLink.getPersistenceId();
    MJob job = client.createJob(fromLinkId,toLinkId);
    job.setName("HDFS to MySQLjob"+num);
    job.setCreationUser("sqoop2");
    //设置源链接任务配置信息
    MFromConfig fromJobConfig =job.getFromJobConfig();
    fromJobConfig.getStringInput("fromJobConfig.inputDirectory").setValue("/user/sqoop2");

    //创建目的地链接任务配置信息
    MToConfig toJobConfig =job.getToJobConfig();
    toJobConfig.getStringInput("toJobConfig.schemaName").setValue("db_warehouse");
    toJobConfig.getStringInput("toJobConfig.tableName").setValue("T_TEST_copy");
    //toJobConfig.getStringInput("fromJobConfig.partitionColumn").setValue("id");
    // set the driver config values

// MDriverConfig driverConfig =job.getDriverConfig();
// driverConfig.getIntegerInput(“throttlingConfig.numExtractors”).setValue(3);//这句还没弄明白
Status status = client.saveJob(job);
if(status.canProceed()) {
System.out.println(“JOB创建成功,ID为:”+ job.getPersistenceId());
} else {
System.out.println(“JOB创建失败。”);
}

    //启动任务
    long jobId = job.getPersistenceId();
    MSubmission submission =client.startJob(jobId);
    System.out.println("JOB提交状态为 : " + submission.getStatus());
    while(submission.getStatus().isRunning() &&submission.getProgress() != -1) {
    System.out.println("进度 : " + String.format("%.2f%%", submission.getProgress() * 100));
    //三秒报告一次进度
    try {
    Thread.sleep(3000);
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    System.out.println("JOB执行结束... ...");
    System.out.println("Hadoop任务ID为:" + submission.getExternalJobId());
    Counters counters =submission.getCounters();
    if(counters != null) {
    System.out.println("计数器:");
    for(CounterGroup group : counters) {
    System.out.print("\t");
    System.out.println(group.getName());
    for(Counter counter : group) {
    System.out.print("\t\t");
    System.out.print(counter.getName());
    System.out.print(": ");
    System.out.println(counter.getValue());
    }
    }
    }
    if(submission.getError().getErrorSummary() != null) {
    System.out.println("JOB执行异常,异常信息为 : " +submission.getError());
    }
    System.out.println("HDFS通过sqoop传输数据到MySQL统计执行完毕");
    }
    }

上边的不适合工作环境
工作环境写一个

String url =”http://ip:12000/sqoop/”;
SqoopClient client = new SqoopClient(url);

client.startJob(jobId)

“`
这个jobid 去shell
show job 定时执行就行了.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值