gpt4 book ai didi

mysql - 当使用foreachPartition将rdd中的数据写入mysql时,我偶尔会失去mysql连接

转载 作者:行者123 更新时间:2023-11-29 15:41:37 31 4
gpt4 key购买 nike

我使用spark rdd将数据写入mysql,我使用的运算符是foreachPartition,在运算符中我设置连接池并写入数据(使用scalike jdbc),然后销毁池,但是好像偶尔找不到连接池,日志说连接池尚未初始化。 (name:'xxx),我不知道为什么会发生

数据终于完全插入了。但是异常让我很困惑

最佳答案

我相信你已经以同样的方式实现了(如果使用java)

dstream.foreachRDD(rdd -> {

rdd.foreachPartition(partitionOfRecords -> {

Connection connection = createNewConnection();
while (partitionOfRecords.hasNext()) {
connection.send(partitionOfRecords.next());
}
connection.close();
});
});

在这里,您只需实现单例连接对象模式,而不是 createNewConnection() 方法,并且无需关闭即可离开。

dstream.foreachRDD(rdd -> {

rdd.foreachPartition(partitionOfRecords -> {

Connection connection = ConnectionObject.singleTonConnection();
while (partitionOfRecords.hasNext()) {
connection.send(partitionOfRecords.next());
}

});
});

//单吨方法应该是这样的

public class ConnectionObject (){


private static Connection=null;

public static Connection singleTonConnection(){

if(Connection !=null){

/** get new connection from spring data source or jdbc client**/

}
return Connection;

}
}

关于mysql - 当使用foreachPartition将rdd中的数据写入mysql时,我偶尔会失去mysql连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57570808/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com