spark javaRDD输出到数据库

时间:2016-05-06 05:25:50

标签: java apache-spark sqoop

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

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

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

还有其他方法吗?

由于

3 个答案:

答案 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)

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

  1. 使用类似DBOutputFormat的内容并配置

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

答案 2 :(得分:-1)

我建议在完成所有转换后将最终的JavaRDD保存在数据库中。喜欢:MongoDb,Hbase ......等。我认为这是一个好方法。