Javaのsqldriverとかをたたくと、よくResultSetが返ってくるのですが、その際にdataframeに変換したいということがあったので、メモ程度に.
ResultSetで返ってくるtableのcolumnの数があらかじめ分かっていない時です。
val rs = stmt.getResultSet()
val schema = (1 to rs.getMetaData().getColumnCount()).map { i =>
StructField(rs.getMetaData().getColumnName(i), StringType, true)
}.toList
val data = Iterator
.continually { rs }
.takeWhile(_.next())
.map { rs =>
val row = (1 to rs.getMetaData().getColumnCount()).map { i =>
rs.getString(i)
}.toList
Row(row: _*)
}
.toList
spark.createDataFrame(
spark.sparkContext.parallelize(data),
StructType(schema)
)
こうした方がいいなどありましたら、ご教授ください.