spark javaRDD输出到数据库

spark javaRDD output to database

请帮助我了解将 spark javaRDD 的输出保存到数据库中的最佳方法是什么?

我应该编写 spark java 代码来将 RDD 保存到数据库中吗?这种方法有什么缺点?

或者我应该使用 sqoop 将输出文件保存到数据库中?

还有其他方法吗?

谢谢

您可以使用两种方法将结果写回数据库。

  1. 使用 DBOutputFormat 之类的东西并配置它

  2. 在要保存的 RDD 上使用 foreachPartition 并传入一个函数,该函数创建到 MySQL 的连接并将结果写回。

使用数据帧并将数据保存到 sql 服务器

SQLContext sqlcontext=new SQLContext(context);
DataFrame outDataFrame=sqlcontext.createDataFrame(finalOutPutRDD, WebHttpOutPutVO.class);
Properties prop = new java.util.Properties();
prop.setProperty("database", "Web_Session");
prop.setProperty("user", "user");
prop.setProperty("password", "pwd@123");
prop.setProperty("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver");
outDataFrame.write().mode(org.apache.spark.sql.SaveMode.Append).jdbc("jdbc:sqlserver://<Host>:1433", "test_table", prop);