当前位置: 首页 > 知识库问答 >
问题:

使用Spark JdbcRDD读取PostgreSQL表时出错

常业
2023-03-14

我试图在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)

但是,它返回以下错误:

组织。阿帕奇。火花SparkException:作业因阶段失败而中止:阶段1.0中的任务0失败4次,最近的失败:阶段1.0中的任务0.3丢失(TID 7,10.0.0.13,执行者1):组织。postgresql。util。PSQLException:列索引超出范围:1,列数:0。

我使用的是最新的PostgreSQL JDBC驱动程序,我已经检查过它是否能够正确地对数据库进行身份验证。

你知道为什么会发生这种情况吗?或者我可以尝试其他方法吗?

共有1个答案

郏正信
2023-03-14

来自spark文档

查询必须包含两个 占位符

lowerBound第一个占位符参数的最小值;upperBound第二个占位符的最大值

因此,您的查询应该更像

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

 类似资料:
  • 问题内容: 我正在使用NetBeans 6.9.1使用Spring / Hibernet。我正在尝试读取Excel文件(.xlsx- Office 2007)。读取Excel文件的代码如下,使用来存储Excel工作表中的数据。 以下是我的方法,该方法调用上述方法以读取指定的Excel文件 在执行此代码时,将引发以下异常。 提供的数据似乎在Office 2007+ XML中。您正在调用POI中与OL

  • 我返回了一个代码,使用jsoup-1.7.3.jar读取网页,它对一些网站有效,但对一些URL显示读取超时错误。 线程“main”java.net.SocketTimeoutException中的异常:java.net.SocketInputStream.socketRead0(本机方法)处java.net.SocketInputStream.Read(SocketInputStream.java

  • 我在apache Spark中读取本地文件时出错。scala>val f=sc.textfile(“/home/cloudera/downloads/sample.txt”)

  • 我必须说我是Spring的新手,所以很可能你们读这篇文章很容易。 我的例子很简单。我有类Main、Business和Client,为了从Business获取客户端,我创建了包含 我想做的是打印业务的客户端,但它抛给我以下错误: 下面是代码的内容 豆。xml 客户界面 客户端 商务 主要的 谁能告诉我我做错了什么吗?如果有人想测试它,这里有一个项目链接:https://www.dropbox.com

  • 问题内容: 假设我有一个名为取款的表(id,金额,user_id,状态)。 每当我开始提款时,流程如下: 验证用户是否有足够的余额(按收到的金额之和-取款金额之和计算) 插入行,其金额为user_id,status =``结束’‘。 通过gRPC调用第三方软件以发起提款(实际上是汇款),等待响应 如果我们收到肯定的答复,请立即更新状态为“已完成”的行;如果提款失败,则删除该条目。 但是,我在此流程

  • 我正在尝试从db中选择*。abc在蜂箱中,这个蜂箱表是使用spark加载的 它不工作显示错误: 错误:java。伊奥。IOException:java。lang.IllegalArgumentException:bucketId超出范围:-1(状态=,代码=0) 当我使用以下属性时,我能够查询配置单元: 现在,当我尝试读取相同的hive表db.abc使用火花,我收到的错误如下: 客户端只有在具有以