请帮助我了解将spark javaRDD
的输出保存到数据库中的最佳方法是什么?
我应该编写spark java代码来将RDD
保存到数据库中吗?这种方法会有什么缺点?
或者我应该使用sqoop
将输出文件保存到数据库中?
还有其他方法吗?
由于
答案 0 :(得分:2)
使用数据帧并将数据保存到sql server
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);
答案 1 :(得分:0)
您可以使用两种方法将结果写回数据库。
使用类似DBOutputFormat的内容并配置
在要保存的RDD上使用foreachPartition,并传入一个与MySQL建立连接并将结果写回的函数。
答案 2 :(得分:-1)
我建议在完成所有转换后将最终的JavaRDD保存在数据库中。喜欢:MongoDb,Hbase ......等。我认为这是一个好方法。