Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何通过JDBC在spark中执行更新查询_Scala_Apache Spark_Jdbc - Fatal编程技术网

Scala 如何通过JDBC在spark中执行更新查询

Scala 如何通过JDBC在spark中执行更新查询,scala,apache-spark,jdbc,Scala,Apache Spark,Jdbc,我希望使用JDBC对spark中的sqlserver数据执行所有dml操作,但在执行更新查询时遇到问题。 下面是用于获取连接的代码和用于执行的查询,以及在执行更新查询时获得的异常。 任何关于如何克服这个问题的帮助或指点都将大有裨益。 提前谢谢 val jdbcDbTable = "dbName" val jdbcSqlConnStr = "jdbc:sqlserver://xxxx:portno;" + "user=xx;password=xxx;" val jdbcDF = sqlConte

我希望使用JDBC对spark中的sqlserver数据执行所有dml操作,但在执行更新查询时遇到问题。 下面是用于获取连接的代码和用于执行的查询,以及在执行更新查询时获得的异常。 任何关于如何克服这个问题的帮助或指点都将大有裨益。 提前谢谢

val jdbcDbTable = "dbName"

val jdbcSqlConnStr = "jdbc:sqlserver://xxxx:portno;" + "user=xx;password=xxx;"
val jdbcDF = sqlContext.read.format("jdbc")
  .options(Map("driver" -> "com.microsoft.sqlserver.jdbc.SQLServerDriver",
               "url" -> jdbcSqlConnStr,
               "dbtable" -> jdbcDbTable))
  .load()
jdbcDF.registerTempTable("customer1")

val cust = sqlContext.sql("Select * from customer1")
cust.show()
问题是select*语句返回正确的结果,但当我执行update语句时,如下所示:

val upd = sqlContext.sql("update customer1  set C_NAME='newcustomer' " +
        " where C_CustKey=1471774")
upd.show()
我得到一个错误:

Exception in thread "main" org.apache.spark.sql.catalyst.parser.ParseException: 
mismatched input 'update' expecting {'(', 'SELECT', 'FROM', 'ADD', 'DESC', 'WITH', 'VALUES', 'CREATE', 'TABLE', 'INSERT', 'DELETE', 'DESCRIBE', 'EXPLAIN', 'SHOW', 'USE', 'DROP', 'ALTER', 'MAP', 'SET', 'RESET', 'START', 'COMMIT', 'ROLLBACK', 'REDUCE', 'REFRESH', 'CLEAR', 'CACHE', 'UNCACHE', 'DFS', 'TRUNCATE', 'ANALYZE', 'LIST', 'REVOKE', 'GRANT', 'LOCK', 'UNLOCK', 'MSCK', 'EXPORT', 'IMPORT', 'LOAD'}(line 1, pos 0)

== SQL ==
update customer1  set C_NAME='newcustomer'  where C_CustKey=1471774
^^^

您不是通过JDBC更新表,而是尝试更新spark目录表。Spark不支持update语句

您可以通过JDBC连接(使用Spark或普通JDBC)执行查询,然后取回数据帧