我想將數據幀中的內容傳遞到我的SQL存儲過程。我使用map函數遍歷數據幀內容並將它們發送到數據庫。嘗試這樣做時出現錯誤。將數據幀內容傳遞到SQL存儲過程
我得到一個錯誤呼籲沒有找到所有 編碼器 - 場(類: 「java.lang.Object繼承」,名稱: 「_1」) - 根類: 「scala.Tuple2」
莫非有人幫我糾正這一點。
下面是我的代碼
val savedDataFrame = dataFrame.map(m => sendDataFrameToDB(m.get(0), m.get(1), m.get(2), m.get(3)))
savedDataFrame.collect()
def sendDataFrameToDB(firstName : String, lastName : String, address : String, age : Long) = {
var jdbcConnection: java.sql.Connection = null
try {
val jdbcTemplate = new JDBCTemplate()
jdbcTemplate.getConfiguration()
jdbcConnection = jdbcTemplate.getConnection
if (jdbcConnection != null) {
val statement = "{call insert_user_details (?,?,?,?)}"
val callableStatement = jdbcConnection.prepareCall(statement)
callableStatement.setString(1, firstName)
callableStatement.setString(2, lastName)
callableStatement.setString(3, address)
callableStatement.setLong(4, age)
callableStatement.executeUpdate
}
} catch {
case e: SQLException => logger.error(e.getMessage)
}
}
試** **的foreach,而不是地圖 –
沒有不能用的foreach。 map提供比foreach更好的性能 – Kepler
然後爲map [doc]提供編碼器(https://spark.apache.org/docs/latest/api/scala/index.html#org.apache.spark.sql.Dataset) –