Java操作Sqoop对象

Windows下使用Eclipse工具操作Sqoop1.4.6对象

Sqoop是用来在关系型数据库Hadoop之间进行数据的导入导出,Windows下使用Eclipse工具操作时,需要先搭建好Hadoop的开发环境

  1. 参照Java操作HDFS对象的pom.xml配置,添加配置

    <dependency>
        <groupId>org.apache.sqoop</groupId>
        <artifactId>sqoop</artifactId>
        <version>1.4.6</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.36</version>
    </dependency> 

    使用MySQL进行数据和Hadoop之间的导入导出操作,需要MySQL的驱动包。sqoop-1.4.6.jar包在maven里下载不下来,将sqoop的安装目录下$SQOOP_HOME下的sqoop-1.4.6.jar包拷贝到maven仓库对应的sqoop的目录下即可。

  2. Windows下配置Sqoop的环境变量 
    Windows下操作Sqoop时需要使用到Sqoop下的包,需要配置环境变量。 
    将下载的sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz解压到本机目录下,配置Sqoop的环境变量:
    SQOOP_HOME=F:\data\sqoop-1.4.6.bin__hadoop-2.0.4-alpha
    PATH=PATH;%SQOOP_HOME%\bin; 
  3. 检查是否配置成功 
    sqoop version 
     
    警告不用管,Windows下不需配置
  4. Java操作Sqoop对象 
    Windows本机下MySQL服务要先启动
    • 4.1 将MySQL数据导入到HDFS

      import org.apache.hadoop.conf.Configuration;
      import org.apache.sqoop.Sqoop;
      import org.apache.sqoop.tool.SqoopTool;
      import org.apache.sqoop.util.OptionsFileUtil;
      
      public class SqoopTest {
      
          private static int importDataFromMysql() throws Exception {
              String[] args = new String[] {
                      "--connect","jdbc:mysql://192.168.1.97:3306/mydb",
                      "--driver","com.mysql.jdbc.Driver",
                      "-username","root",
                      "-password","root",
                      "--table","user",
                      "-m","1",
                      "--target-dir","java_import_user"
              };
      
              String[] expandArguments = OptionsFileUtil.expandArguments(args);
      
              SqoopTool tool = SqoopTool.getTool("import");
      
              Configuration conf = new Configuration();
              conf.set("fs.default.name", "hdfs://192.168.1.200:9000");//设置HDFS服务地址
              Configuration loadPlugins = SqoopTool.loadPlugins(conf);
      
              Sqoop sqoop = new Sqoop((com.cloudera.sqoop.tool.SqoopTool) tool, loadPlugins);
              return Sqoop.runSqoop(sqoop, expandArguments);
          }
      
          public static void main(String[] args) throws Exception {
              importDataFromMysql();
          }
      
      } 

      可以在HDFS上查看生成的文件 
       
      发现在HDFS下生成了目录/user/cyyun/java_import_user,程序中--target-dir没有指定具体路径,本机Windows的用户名是cyyun,在Windows上使用程序操作时会在/user/下生成一个Windows用户名的目录 
      查看结果:

      hadoop fs -cat /user/cyyun/java_import_user/part-m-00000
      hadoop fs -cat /user/cyyun/java_import_user/part-m-00001 

      将程序中--target-dir指定为/user/root/java_import_user,运行查看结果:

      hadoop fs -cat /user/root/java_import_user/part-m-00000 

本文参考: 
http://blog.csdn.net/guzicheng/article/details/41519947

时间: 2024-11-02 19:07:26

Java操作Sqoop对象的相关文章

java 使用xom对象数据序列化为xml、反序列化、Preferences相关操作小案例

package org.rui.io.xml; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.util.Arrays; import java.util.List; import nu.xom.Document; import nu.

java类,对象,方法

1,类和对象   在面向对象的概念当中,类(class)是既包括数据又包括作用于数据的一组操作的封装体.类的数据称为成员变量,类对数据的操作称为成员方法.成员变量反映类的状态和特征,成员方法反映类的行为和能力.类的成员变量和方法统称为类的成员.   对象(Object)是类的实例(instance).对象是动态的,拥有生命周期,都会经历一个从创建.运行到消亡的过程.对象与类的关系就像变量与数据类型一样.   类声明 { 修饰符 } class <Classname> { extends <

Java操作XML的JAXB工具

在java中操作XML的工作中中,比较方便的工具是JAXB(Java Architecture for XML Binding). 利用这个工具很方便生成XML的tag和Java类的对应关系.参照网上的资料,简单说明一下java操作xml的一些东西. 1.先定义一个XML Schema文件.比如: [html] view plain copy print? <?xml version="1.0" encoding="UTF-8" standalone=&quo

java操作xml的一个小例子

最近两天公司事比较多,这两天自己主要跟xml打交道,今天更一下用java操作xml的一个小例子. 原来自己操作xml一直用这个包:xstream-1.4.2.jar.然后用注解的方式,很方便,自己只要定义好bean的层次结构就可以了,第三方包会自动生成和解析xml. 但是今天发现,这个包有两个问题: 一个是比较复杂(我是菜鸟,求别喷,我真的觉得他挺复杂的..).比如说你要想处理既有属性又有值的xml就比较麻烦.(@XStreamConverter注解这种方法报这个错:com.thoughtwor

Java中字符串对象

Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使用,尤其是字面量的方式.然而这两种实现其实存在着一些性能和内存占用的差别.这一切都是源于JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池. 工作原理 当代码中出现字

分析Java的String对象

对于Java中的String对象,个人觉得每个程序员都会思考过.学习过.研究过这个对象,因为他是面试官们的最爱.如:String s = new String("abc");,创建了几个对象.这种问题反复出现在程序员面试的过程中.下面我们对应着一些代码片段以及其的执行结果,来深入分析Java的String对象. 首先我们要注意的是String对象的处理在JDK6和JDK7中的处理是不同的.下面通过代码来分析String的三个主要方面知识. 1.常量池的存在 先看看下面代码以及执行结果:

java操作Excel

一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象.它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel对象,你可以控制一些属性如sheet,cell等等. 二.HSSF概况 HSSF 是Horrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”.也许HSSF的名字有点

java操作mongoDB实现CURD

java操作mongoDB mongoDB作为一个牛气哄哄的nosql内存数据库,的确有很多优点,对于大数据量.高并发.弱事务的互联网应用,MongoDB可以应对自如.接触到mongoDB 参考了下api实现了增删改查.mongoDB 是面向对象设计,不用写sql语句 直接操作api 方法 就可以实现,这会儿数据库语句写不好的娃娃们有福了.直接贴码: DataTest.java package com.zk.db; import java.net.UnknownHostException; im

浅谈Java中的对象和引用

浅谈Java中的对象和对象引用 在Java中,有一组名词经常一起出现,它们就是"对象和对象引用",很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然.今天我们就来一起了解一下对象和对象引用之间的区别和联系. 1.何谓对象? 在Java中有一句比较流行的话,叫做"万物皆对象",这是Java语言设计之初的理念之一.要理解什么是对象,需要跟类一起结合起来理解.下面这段话引自<Java编程思想>中的一段原话: "按照通