通过虚拟机的hdfs读取本地mysql上的文件

读取时会出现一些问题
比如 虚拟机上无法ping 本地ip
还有就是需要在类中加
job.addFileToClassPath(new Path("/mysql-connector-java-5.1.43-bin.jar"));
关于这个jar包需要放在hdfs中
在解压安装的hadoop中的share/hadoop/common/lib/下也要加入
且每个子节点都得配置一下
避免出错



public class ReadFormDB {

public static class ReadFromDBMap extends Mapper<LongWritable, WordCountDBWritable, Text, NullWritable> {

    private final NullWritable outValue = NullWritable.get();
    private Text outKey = new Text();

    @Override
    protected void map(LongWritable key, WordCountDBWritable value,
            Mapper<LongWritable, WordCountDBWritable, Text, NullWritable>.Context context)
            throws IOException, InterruptedException {

        outKey.set(value.toString());
        context.write(outKey, outValue);
    }
}
//GRANT ALL PRIVILEGES ON . TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION; 

public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException {
    Configuration configuration =new Configuration();

// DBConfiguration.configureDB(configuration, "com.mysql.jdbc.Driver", "jdbc:mysql://localhost/test","root","123456");
DBConfiguration.configureDB(configuration, "com.mysql.jdbc.Driver",
"jdbc:mysql://192.168.111.1:3306/test?useSSL=false&autoReconnect=true&failOverReadOnly=false","root","123456");

    Job job=Job.getInstance(configuration);
    job.setJarByClass(ReadFormDB.class);
    job.setJobName("读取从mysql中");

    job.setMapperClass(ReadFromDBMap.class);
    job.setNumReduceTasks(0);
    job.setMapOutputKeyClass(Text.class);
    job.setMapOutputValueClass(NullWritable.class);
    job.addFileToClassPath(new Path("/mysql-connector-java-5.1.43-bin.jar"));
    DBInputFormat.setInput(job, WordCountDBWritable.class, "word_count", "wc_count","wc_count asc","*");
    Path outputPath =new Path("/ReadFormD");
    outputPath.getFileSystem(configuration).delete(outputPath, true);
    FileOutputFormat.setOutputPath(job, outputPath);
    System.exit(job.waitForCompletion(true)?0:1);

}

}



把wordcount 的结果写入到mysql中
public class WriteToDB {
// 对应表 word_count create table(wc_word varchar(255) )
public static class WordCountDBWritable implements DBWritable, Writable {

    private String word;
    private int count;

    public String getWord() {
        return word;
    }

    public void setWord(String word) {
        this.word = word;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }

    @Override
    public String toString() {
        return word + "," + count;
    }

    // 把数据写到数据库中
    // insert into word_count(wc_word,wc_count)value(?,?)
    public void write(PreparedStatement statement) throws SQLException {
        statement.setString(1, this.word);
        statement.setInt(2, this.count);
    }

    // 从数据库中读取数据
    public void readFields(ResultSet resultSet) throws SQLException {

        this.word = resultSet.getString("wc_word");
        this.count = resultSet.getInt("wc_count");
    }

    public void write(DataOutput out) throws IOException {

        out.writeUTF(this.word);
        out.writeInt(this.count);
    }

    public void readFields(DataInput in) throws IOException {
        this.word = in.readUTF();
        this.count = in.readInt();

    }

}

public static class WriteToDBMap extends Mapper<LongWritable, Text, Text, IntWritable> {

    private final IntWritable ONE = new IntWritable(1);
    private Text oKey = new Text();
    private String[] infos;


上面是读文件的方式

下面是关于如何写入到本地mysql中

时间: 2024-12-27 23:00:35

通过虚拟机的hdfs读取本地mysql上的文件的相关文章

socket如何读取上传文件数据

问题描述 我有用ServerSocketserver=newServerSocket(80);去监听80端口.接着我用Socketclient=server.accept();client.setKeepAlive(true);InputStreamin=client.getInputStream();byte[]buff=newbyte[1024*100];intlen=in.read(buff); 去读取客户端的请求信息.测试:我用get方式,post的application/x-www-f

百度ueditor编辑器部署ASP网站错误:百度编辑器ueditor部署服务器,浏览网页用户无法上传文件。

问题描述 报错信息:(本地能上传文件)--百度ueditor编辑器部署ASP网站错误POSThttp://www.by96.com/admin/ueditor/asp/controller.asp?action=uploadfile&encode=utf-8500(InternalServerError)webuploader.min.js:2b.register.sendwebuploader.min.js:2d.execwebuploader.min.js:1execwebuploader.

有谁用VB6做过HTTP上传文件吗,用Microsoft.XMLHTTP或者其它组件,上传到.NET或者JAVA的WEB服务器

问题描述 问题的提出:客户打开网页,已经知道客户本地硬盘上的文件路径和目录,在客户不打开文件选择窗口的情况下,把客户的文件上传到J2EE的WEB服务器,采用JAVA的COS组件来存取文件.初步的解决办法:用VB6做一个OCX控件,放在网页里面,把文件地址和WEB服务器上传路径传给这个控件,然后调用这个控件的上传方法,上传文件,找了很多资料后,只是做到了可以上传文本文件,二进制文件没有搞定.然后做了一个网页,提交一个FORM(method="post"enctype="mult

android虚拟机 连接本地pc上的Mysql

Android中模拟器如何访问本地mysql数据库 package com.game.music; import java.io.UnsupportedEncodingException; import java.sql.DriverManager; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import android.app.Activity; import android.co

如何把本地MySql数据库移植到远程服务器上

如何把本地MySql数据库移植到远程服务器上 用dedecms做了一个女性网站,是仿爱丽女人网的.为了在本地测试,就要添加分类栏目,为了看首页和列表页面的效果,还得在网上采集大量的各个分类的内容.这样下来几十个栏目每栏目几十条信息,信息一下就是几千条.做着做着就还不如先在本地做好,然后带数据图片一起上传上去.速度快!好操作,灵活性大.现在就把数据库的移植过程写出来和大家共享,有这样做的朋友也可以做个参考! 所有数据做好了,申请空间,申请数据库,好多情况也是已经有数据的数据回了.哪就要先备份已有的

sftp下载zip文件-java从sftp上下载到本地磁盘的zip文件读取不了,请大家帮忙解答下,谢谢!

问题描述 java从sftp上下载到本地磁盘的zip文件读取不了,请大家帮忙解答下,谢谢! 从sftp上下载到本地的zip文件是没问题的,用压缩工具打开能查看里面的文件,为什么就是读取不了呢? java从sftp下载zip文件到本地磁盘代码: import java.io.InputStream; import java.util.Date; import com.ibm.gbs.ai.portal.framework.util.DateUtils; import com.jcraft.jsch

伪分布模式-读取HDFS上的文件问题

问题描述 读取HDFS上的文件问题 在伪分布模式下测试代码,在eclipse里建了个项目,然后在map函数里我想从hdfs中读取文件数据(testData.csv),然后这几段代码就会出现问题,String str_url="hdfs://localhost:9000";URI.creat(str_url);String str="hdfs://localhost:9000/user/input/testData.csv";Path path=new Path(st

《Hadoop海量数据处理:技术详解与项目实战》一 3.2 HDFS读取文件和写入文件

3.2 HDFS读取文件和写入文件 Hadoop海量数据处理:技术详解与项目实战我们知道在HDFS中,NameNode作为集群的大脑,保存着整个文件系统的元数据,而真正数据是存储在DataNode的块中.本节将介绍HDFS如何读取和写入文件,组成同一文件的块在HDFS的分布情况如何影响HDFS读取和写入速度. 3.2.1 块的分布HDFS会将文件切片成块并存储至各个DataNode中,文件数据块在HDFS的布局情况由NameNode和hdfs-site.xml中的配置dfs.replicatio

Java Socket+mysql实现简易文件上传器的代码_java

最近跟着某网站学习了一个小项目,因为白天有课,所以都是晚上写的,今天把它完成了. 项目主要是实现一个文件上传器,通过客户端的登陆,把本地文件上传到服务器的数据库(本地的). 首先建两个表如下: 一个文件信息表 CREATE TABLE `fileinfo` ( `Fname` char(50) NOT NULL, `FInfo` blob NOT NULL, `FId` int(10) NOT NULL AUTO_INCREMENT, PRIMARY KEY (`FId`) ) ENGINE=I