簡體   English   中英

使用Spark JdbcRDD讀取PostgreSQL表時出錯

[英]Error using Spark JdbcRDD to read PostgreSQL table

我正在嘗試在RDD中將表從PostgreSQL 9.6讀入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驅動程序,並且已經檢查它是否可以正確驗證數據庫。

為什么會發生這種情況的任何想法,或者我可以嘗試的替代方法?

Spark文檔

查詢必須包含兩個? 用於對結果進行分區的參數的占位符

lowerBound第一個占位符參數的最小值; upperBound第二個占位符的最大值

所以您的查詢應該更像

select * from my_table where ? <= id and id <= ?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM