2015-09-07 136 views
0

我有一个包含三个记录的以下两列(id,Status)的mysql表(组合)。使用Spark Dataframe更新Mysql列值

+----+--------+ 
| Id | Status | 
+----+--------+ 
| 1 |  0 | 
| 2 |  1 | 
| 3 |  3 | 
+----+--------+ 

我想更新从0状态列1 ID = 1

我试图在火花阶是什么:

val portfolio_id =1 
    val dbUrl ="jdbc:mysql://localhost:3306/test?user=root&password=root" 
    val prop = new java.util.Properties 
    prop.setProperty("user","root") 
    prop.setProperty("password","root") 

    val sqlContext = new org.apache.spark.sql.SQLContext(sc) 

    val portfolioDF=sqlContext.read.jdbc(dbUrl,"portfolio",prop)  
    portfolioDF.registerTempTable("portfolioDF") 
    val results =sqlContext.sql("SELECT status from portfolioDF where  id="+portfolio_id) 
    //display the record 
    results.show() 

    //results.insertIntoJDBC(dbUrl, "portfolio", true); 

现在我该怎样使用“结果“数据框来修改”状态“列值。 或者有任何其他的方式,我可以通过数据框修改mysql列值。 任何指导将有帮助

在此先感谢。

回答

0

我想更新从0状态列,1为ID = 1

对于更新使用UPDATESELECT

UPDATE portfolioDF 
SET status = 1 
WHERE id = 1; 
+0

忘记提到,我已经尝试上述更新命令我收到的错误是线程“main”中的异常java.lang.RuntimeException:[1.1]失败:与''预期但标识符更新发现 UPDATE portfolioDF SET status = 1 WHERE id = 1; – user3792686