自定义对象的mysql输出

本文详细介绍了在Hadoop中使用自定义对象进行序列化的过程,包括实现Serializable接口及DBWritable接口的方法,配置Job输出类型至数据库的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、首先,自定义对象,该对象需要实现序列化功能才可以在网络上运行,实现序列化功能需要继承 java.io.Serializable 这个接口,
这个接口定义了空方法,不需要实现任何功能,表示具有序列化功能的一个空接口
不过需要定义一个序列号,例如如下:
 private static final long serialVersionUID = 1L;

    然而,hadoop中关于序列化对象的方法有一个需要实现readFields(ResultSet resultSet)和write(PreparedStatement preparedStatement)的
接口DBWritable,实现了该接口的对象方可在reducer和mapper中进行对象的存储。
例如:
    @Override
    public void write(PreparedStatement preparedStatement) throws SQLException {
        preparedStatement.setString(1, time);
        preparedStatement.setInt(2, sum);
        preparedStatement.setInt(3, workSum);
        preparedStatement.setDouble(4, rate);
    }

    @Override
    public void readFields(ResultSet resultSet) throws SQLException {
        resultSet.getString(1);
        resultSet.getInt(2);
        resultSet.getInt(3);
        resultSet.getDouble(4);
    }
2、定义输出类型为实现了序列化的类型
3、配置Job的输出类型
    先建立连接,配置数据库的驱动位置
                配置数据库的url位置
                配置数据库的账户和密码
        config.set(DBConfiguration.DRIVER_CLASS_PROPERTY,"com.mysql.jdbc.Driver");
        config.set(DBConfiguration.URL_PROPERTY,"jdbc:mysql://localhost:3306/test");
        config.set(DBConfiguration.USERNAME_PROPERTY, "root");
        config.set(DBConfiguration.PASSWORD_PROPERTY, "111111");
配置输出的数据表以及其中的内容,如下格式:    
        DBOutputFormat.setOutput(job_name, table_name, attribute_name1, attribute_name2, attribute_name3....);
        如下例子:
        DBOutputFormat.setOutput(job, "t_car", "time",  "sum", "work_sum", "rate");
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值