【发布时间】:2018-01-12 17:44:26
【问题描述】:
我正在尝试将preparestatement 与JDBC 一起使用。它产生 ResultSet 对象。我想把它转换成火花数据框。
object JDBCRead {
val tableName:String = "TABLENAME"
val url :String = "jdbc:teradata://TERADATA_URL/user=USERNAME,password=PWD,charset=UTF8,TYPE=FASTEXPORT,SESSIONS=10"
val selectTable:String = "SELECT * FROM " + tableName +" sample 10";
val con : Connection = DriverManager.getConnection(url);
val pstmt2: PreparedStatement = con.prepareStatement(selectTable)
import java.sql.ResultSet
val rs: ResultSet = pstmt2.executeQuery
val rsmd: ResultSetMetaData = rs.getMetaData
while(rs.next()!=null)
{
val k: Boolean = rs.next()
for(i<-1 to rsmd.getColumnCount) {
print(" " + rs.getObject(i))
}
println()
}
}
我想从 Spark Dataframe 调用上面的代码,以便我可以将数据加载到 DataFrame 并更快地分布式获取结果。
我必须使用PreparedStatement。我不能使用spark.jdbc.load,因为 Teradata 的 FASTEXPORT 不适用于 jdbc 负载。它必须与PreparedStatement一起使用
如何做到这一点?如何将preparestatement 与SELECT 语句一起加载到Spark Dataframe 中。
【问题讨论】:
标签: apache-spark dataframe jdbc teradata