我试图从PostgreSQL 9.6中读取一个表到RDD中的Spark 2.1.1,我在Scala中有以下代码 .
import org.apache.spark.rdd.JdbcRDD
import java.sql.DriverManager
import org.apache.spark.SparkContext
val sc = SparkContext.getOrCreate()
val rdd = new org.apache.spark.rdd.JdbcRDD(
sc,
() => {DriverManager.getConnection(
"jdbc:postgresql://my_host:5432/my_db", "my_user", "my_pass")},
sql = "select * from my_table",
0, 100000, 2)
但是,它返回以下错误:
org.apache.spark.SparkException:作业因阶段失败而中止:阶段1.0中的任务0失败4次,最近失败:阶段1.0中失去的任务0.3(TID 7,10.0.0.13,执行者1):org.postgresql .util.PSQLException:列索引超出范围:1,列数:0 .
我正在使用最新的PostgreSQL JDBC驱动程序,我已经检查过它是否正确地验证了数据库 .
任何想法为什么会发生这种情况或任何我可以尝试的替代方案?
1 回答
来自spark documentation
和
所以你的查询看起来应该更像