sqoop我就不再这里给大家介绍了,能来到这里应该都知道sqoop了。

目前我写了一个demo,springboot操作sqoop。废话不多说,直入主题。

pom文件

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<parent>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-parent</artifactId>

<version>2.2.1.RELEASE</version>

<relativePath/> <!-- lookup parent from repository -->

</parent>

<groupId>com.example</groupId>

<artifactId>demo</artifactId>

<version>0.0.1-SNAPSHOT</version>

<name>demo</name>

<description>Demo project for Spring Boot</description>

<properties>

<java.version>1.8</java.version>

</properties>

<dependencies>

 

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-web</artifactId>

</dependency>

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-starter-test</artifactId>

<scope>test</scope>

<exclusions>

<exclusion>

<groupId>org.junit.vintage</groupId>

<artifactId>junit-vintage-engine</artifactId>

</exclusion>

</exclusions>

</dependency>

<!--sqoop!!!!!!!!!!!!!!!!!!!!!!!!-->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.42</version>

</dependency>

<dependency>

<groupId>org.apache.sqoop</groupId>

<artifactId>sqoop</artifactId>

<version>1.4.7</version>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<version>3.0</version>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-lang3</artifactId>

<version>3.0</version>

</dependency>

<!--hadoop-->

<dependency>

<groupId>org.apache.hadoop</groupId>

<artifactId>hadoop-common</artifactId>

<version>2.8.4</version>

</dependency>

<dependency>

<groupId>org.apache.hadoop</groupId>

<artifactId>hadoop-hdfs</artifactId>

<version>2.8.4</version>

</dependency>

<dependency>

<groupId>org.apache.hadoop</groupId>

<artifactId>hadoop-mapreduce-client-core</artifactId>

<version>2.8.4</version>

</dependency>

<dependency>

<groupId>org.apache.hadoop</groupId>

<artifactId>hadoop-mapreduce-client-common</artifactId>

<version>2.8.4</version>

</dependency>

<dependency>

<groupId>org.apache.hadoop</groupId>

<artifactId>hadoop-mapreduce-client-jobclient</artifactId>

<version>2.8.4</version>

<scope>test</scope>

</dependency>

<dependency>

<groupId>org.apache.avro</groupId>

<artifactId>avro-mapred</artifactId>

<version>1.8.1</version>

</dependency>

<dependency>

<groupId>org.apache.hive</groupId>

<artifactId>hive-common</artifactId>

<version>2.3.2</version>

</dependency>

<dependency>

<groupId>org.apache.avro</groupId>

<artifactId>avro</artifactId>

<version>1.8.1</version>

</dependency>

</dependencies>

<build>

<plugins>

<plugin>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-maven-plugin</artifactId>

</plugin>

</plugins>

</build>

</project>

 

controller

package com.example.demo.module.controller;

import com.example.demo.module.bean.sqoopBean;

import com.example.demo.module.service.sqoopService;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.PostMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.ResponseBody;

import org.springframework.web.bind.annotation.RestController;

@RestController

public class sqoopController {

@Autowired

private sqoopService ss;

@RequestMapping("/hi")

public String get(){

return "你好";

}

//数据从mysql到hdfs

@PostMapping("/mysql2hdfs")

@ResponseBody

public sqoopBean sqoopTransform(String jdbc, String driver, String username, String password, String table, int m, String targetdir, String putlocation) throws Exception {

return ss.db2db(jdbc,driver,username,password,table,m,targetdir,putlocation);

//返回0正确,返回1错误

}

//数据从mysql到hbase

@PostMapping("/mysql2hbase")

@ResponseBody

public sqoopBean transformMysql2Hbase(String jdbc,String driver,String username,String password,String mysqlTable,String hbaseTableName,String columnFamily,String rowkey,int m) throws Exception {

return ss.mysql2Hbase(jdbc,driver,username,password,mysqlTable,hbaseTableName,columnFamily,rowkey,m);

}

}

 

bean

package com.example.demo.module.bean;

import java.sql.Timestamp;

public class sqoopBean {

private int i;

private Timestamp ts;

public int getI() {

return i;

}

public int setI(int i) {

this.i = i;

return i;

}

@Override

public String toString() {

return "sqoopBean{" +

"i=" + i +

", ts=" + ts +

'}';

}

public Timestamp getTs() {

return ts;

}

public Timestamp setTs(Timestamp ts) {

this.ts = ts;

return ts;

}

}

 

service

package com.example.demo.module.service;

import com.example.demo.module.bean.sqoopBean;

public interface sqoopService {

public sqoopBean db2db(String jdbc, String driver, String username, String password, String table, int m, String targetdir, String putlocation) throws Exception;

//mysql到hbase

public sqoopBean mysql2Hbase( String jdbc, String driver, String username, String password,String mysqlTable, String hbaseTableName, String columnFamily, String rowkey, int m) throws Exception;

serviceImpl

package com.example.demo.module.service.impl;

import com.example.demo.module.bean.sqoopBean;

import com.example.demo.module.service.sqoopService;

import org.apache.hadoop.conf.Configuration;

import org.apache.sqoop.Sqoop;

import org.apache.sqoop.tool.SqoopTool;

import org.apache.sqoop.util.OptionsFileUtil;

import org.springframework.stereotype.Service;

import java.sql.Timestamp;

import java.util.Date;

@Service

public class sqoopServiceImpl implements sqoopService {

// @Autowired

// private sqoopBean sqoopbean;

@Override

public sqoopBean db2db(String jdbc, String driver, String username, String password, String table, int m, String targetdir, String putlocation) throws Exception {

String[] args = new String[] {

"--connect",jdbc,

"--driver",driver,

"-username",username,

"-password",password,

"--table",table,

"-m",String.valueOf(m),

"--target-dir",targetdir,

};

sqoopBean sqoopBean = new sqoopBean();

String[] expandArguments = OptionsFileUtil.expandArguments(args);

SqoopTool tool = SqoopTool.getTool("import");

Configuration conf = new Configuration();

conf.set("fs.default.name", putlocation);//设置HDFS服务地址

Configuration loadPlugins = SqoopTool.loadPlugins(conf);

Sqoop sqoop = new Sqoop((com.cloudera.sqoop.tool.SqoopTool) tool, loadPlugins);

int i = sqoopBean.setI(Sqoop.runSqoop(sqoop,expandArguments));

Timestamp ts = sqoopBean.setTs(new Timestamp(new Date().getTime()));

// map.put("result",Sqoop.runSqoop(sqoop,expandArguments)); map.put("time",new Timestamp(new Date().getTime()));

return sqoopBean;

}

//mysql到hbase

@Override

public sqoopBean mysql2Hbase( String jdbc, String driver, String username, String password,String mysqlTable, String hbaseTableName, String columnFamily, String rowkey, int m) throws Exception {

String[] args = new String[] {

"--connect",jdbc,

"--driver",driver,

"-username",username,

"-password",password,

"--table",mysqlTable,

"--hbase-table",hbaseTableName,

"--column-family",columnFamily,

"--hbase-create-table",

"--hbase-row-key",rowkey,

"-m",String.valueOf(m),

};

sqoopBean sqoopBean = new sqoopBean();

String[] expandArguments = OptionsFileUtil.expandArguments(args);

SqoopTool tool = SqoopTool.getTool("import");

Configuration conf = new Configuration();

Configuration loadPlugins = SqoopTool.loadPlugins(conf);

Sqoop sqoop = new Sqoop((com.cloudera.sqoop.tool.SqoopTool) tool, loadPlugins);

int i = sqoopBean.setI(Sqoop.runSqoop(sqoop,expandArguments));

Timestamp ts = sqoopBean.setTs(new Timestamp(new Date().getTime()));

return sqoopBean;

}

Application

package com.example.demo;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.annotation.ComponentScan;

@SpringBootApplication

public class DemoApplication {

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

测试

我现在测试一下mysql数据迁移到hdfs

下面用到一个软件postman,没有的话百度下载一个