Java 将结果集转换为数据帧

Java 将结果集转换为数据帧,java,scala,apache-spark,Java,Scala,Apache Spark,我希望你们中有人能指导我将scala(或java)结果集转换为spark Dataframe 我不能使用这个符号: val jdbcDF = spark.read .format("jdbc") .option("url", "jdbc:mysql://XXX-XX-XXX-XX-XX.compute-1.amazonaws.com:3306/") .option("dbtable", "pg_partner") .option("user", "XXX") .option(

我希望你们中有人能指导我将scala(或java)结果集转换为spark Dataframe

我不能使用这个符号:

val jdbcDF = spark.read
  .format("jdbc")
  .option("url", "jdbc:mysql://XXX-XX-XXX-XX-XX.compute-1.amazonaws.com:3306/")
  .option("dbtable", "pg_partner")
  .option("user", "XXX")
  .option("password", "XXX")
  .load()
所以在提到我之前,请考虑一下

我不能使用这种表示法的原因是我需要使用当前版本的spark(2.2.0)中没有的jdbc配置,因为我想使用最近添加到spark版本2.4中的“queryTimeout”选项,所以我需要在结果集中使用它

任何帮助都将不胜感激

提前谢谢你

试试这个

(尚未尝试,但应稍加修改)

参考资料:

试试看

(尚未尝试,但应稍加修改)

参考资料:


一个针对公共源mySQL的工作示例

import java.util.Properties
import org.apache.spark.rdd.JdbcRDD
import java.sql.{Connection, DriverManager, ResultSet}
import org.apache.spark.implicits.

val url = "jdbc:mysql://mysql-rfam-public.ebi.ac.uk:4497/Rfam"
val username = "rfamro"
val password = ""
val myRDD = new JdbcRDD( sc, () => DriverManager.getConnection(url, username, password), "select rfam_id, noise_cutoff from family limit ?, ?", 1, 100, 10,                  
                    r => r.getString("rfam_id") + ", " + r.getString("noise_cutoff"))
val DF = myRDD.toDF
DF.show
返回:

+-------------------+
|              value|
+-------------------+
|    5_8S_rRNA, 41.9|
|           U1, 39.9|
|           U2, 45.9|
|         tRNA, 28.9|
|        Vault, 33.9|
|          U12, 52.9|
....
....

一个针对公共源mySQL的工作示例

import java.util.Properties
import org.apache.spark.rdd.JdbcRDD
import java.sql.{Connection, DriverManager, ResultSet}
import org.apache.spark.implicits.

val url = "jdbc:mysql://mysql-rfam-public.ebi.ac.uk:4497/Rfam"
val username = "rfamro"
val password = ""
val myRDD = new JdbcRDD( sc, () => DriverManager.getConnection(url, username, password), "select rfam_id, noise_cutoff from family limit ?, ?", 1, 100, 10,                  
                    r => r.getString("rfam_id") + ", " + r.getString("noise_cutoff"))
val DF = myRDD.toDF
DF.show
返回:

+-------------------+
|              value|
+-------------------+
|    5_8S_rRNA, 41.9|
|           U1, 39.9|
|           U2, 45.9|
|         tRNA, 28.9|
|        Vault, 33.9|
|          U12, 52.9|
....
....

谢谢你们,我会试一试的。谢谢你们,我会试一试的。。。我将尝试两种解决方案,为我的案例选择最佳答案,但再次感谢dude的支持。很好,但我的解决方案确实有效,它们可能是互补的。我想我已经回答了。我只是提到它,因为我发现很多人不明白这里的行为准则,我在上面。。。我将尝试两种解决方案,为我的案例选择最佳答案,但再次感谢dude的支持。很好,但我的解决方案确实有效,它们可能是互补的。我想我已经回答了。我之所以提到这一点,是因为我发现很多人都不了解这里的行为准则