flink mysql sink

flink mysql sink

前言:

  • 应用场景:flink将javaBean写入mysql;
  • 我的javaBean为Gps_infoBean;
  • mysql为windows版本;
package com.cywx.function;


import com.cywx.javabean.Gps_InfoBean;
import org.apache.flink.configuration.Configuration;
import org.apache.flink.streaming.api.functions.sink.RichSinkFunction;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

/**
 * @Author:
 * @Description:
 * @Data:16:58
 */
public class MysqlSink extends RichSinkFunction<Gps_InfoBean> {
    private Connection conn = null;
    private PreparedStatement ps=null;
    String driver = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://mysql的IP地址:3306/自己的数据库名?useUnicode=true&characterEncoding=UTF-8";
    String username  = "root";
    String password = "123";
    @Override
    public void open(Configuration parameters) throws Exception {
        super.open(parameters);
        //加载JDBC驱动
        Class.forName(driver);
        //创建连接
        conn = DriverManager.getConnection(url,username,password);
        //写插入的sql
        String sql = "insert into gps_info01 (`key`,ci,mcc,mnc,lac,typeId,connected,lon,lat,dbm,`time`,old_id) values (?,?,?,?,?,?,?,?,?,?,?,?);";//根据自己的javaBean字段个数设置
        ps = conn.prepareStatement(sql);
    }
    @Override
    public void invoke(Gps_InfoBean value, Context context) throws Exception {
        System.out.println(value.getKey());
        //将sql中的问号指定填入哪个数据
        ps.setString(1,value.getKey());
        ps.setString(2,value.getCi());
        ps.setString(3,value.getMcc());
        ps.setString(4,value.getMnc());
        ps.setString(5,value.getLac());
        ps.setString(6,value.getTypeId());
        ps.setString(7,value.getConnected());
        ps.setDouble(8,value.getLon());
        ps.setDouble(9,value.getLat());
        ps.setString(10,value.getDbm());
        ps.setString(11,value.getTime());
        ps.setString(12,value.getOld_id());
        ps.executeUpdate();
    }

    @Override
    public void close() throws Exception {
        conn.close();
        ps.close();
        super.close();
    }
}

问题:

  • 若报错:null,***计算机名****没有权限,做以下设置
  • 进入mysql
  • use mysql//配置的数据库
    update user set host='%' where user='root';//赋予权限
    flush privileges;//刷新
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值