0
我々はここに以下のコードです、また、MySQLデータベースに処理されたデータを保存する、リアルタイムの計算システムを構築しようとしている。Spark Streaming:foreachRDDデータをMySQLデータベースに効率的に保存する方法は?
splitWordInfo.foreachRDD(new Function<JavaRDD<String>, Void>() {
private static final long serialVersionUID = 1L;
@Override
public Void call(JavaRDD<String> rdd) throws Exception {
rdd.foreachPartition(new VoidFunction<Iterator<String>>() {
// Default Serial ID
private static final long serialVersionUID = 1L;
@Override
public void call(Iterator<String> eachline) throws Exception {
String sql = "insert into test_mm(name,addr) values(?)";
Connection conn = DriverManager.getConnection("jdbc:mysql://xx.xx.xx.xx:3306/dbname", "user", "pass");
PreparedStatement stat = conn.prepareStatement(sql);
while(eachline.hasNext()){
stat.setString(1, eachline.next());
stat.executeUpdate();
}
stat.close();
conn.close();
}
});
return null;
}
});
それは各RDD用/クローズmysqlの接続を開く、またはのためになるんが、各パーティション?
そして効率的にforeachRDDデータをMysqlデータベースに保存する方法。誰も私に恵まれてくれますか?
[MySQL DBとApache Sparkを使用するにはどうすればいいですか?](http://stackoverflow.com/questions/27718382/how-to-work-with-mysql-db-and-apache-spark) – ruhungry
私はベストプラクティスを求めています。foreachRDDデータをMysqlデータベースに保存する方法だけでなく、thx @ruhungry – triffic
私が知る限り、各RDDはmySQLへの接続をオープンします。将来的に規模を拡大したい場合にはベストプラクティスです。 – Frankie