问题标签 [spark-jdbc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
215 浏览

apache-spark-sql - 错误:列“blob”是 jsonb 类型,但表达式是字符类型

试图读取镶木地板文件并转储到 Postgres。postgres 表中的一列是 JSONB 数据类型,在 parquet 中它是字符串格式。

它失败了这个错误:

SO上的某人建议将stringtype=unspecifiedPostgres确定为字符串的数据类型,但它似乎不起作用。

0 投票
1 回答
2791 浏览

sql-server - spark-jdbc 中的预处理语句

我正在尝试使用具有指定偏移量的 Spark jdbc 从 MSSQL 数据库中读取数据。所以数据应该只在指定的时间戳之后加载,这就是这个偏移量。我试图通过在 jdbc 配置中提供查询来实现它,但是,我没有发现用参数化值创建准备好的语句的可能性。在这种情况下,我想参数化一个偏移量,该偏移量在每次应用程序启动后都会改变。如何使用 jdbc 选项实现它?

所有数据库配置都驻留在 application.conf 文件中。这是我从数据库中读取的方式:

相反,查询应该看起来像这样:

0 投票
1 回答
2201 浏览

sql-server - 计算分区 Spark JDBC 的下限和上限

我使用带有 Scala 的 Spark-jdbc 从 MS SQL 服务器读取数据,我想按指定的列对这些数据进行分区。我不想手动设置分区列的下限和上限。我可以在该字段中读取某种最大值和最小值并将其设置为上限/下限吗?另外,使用这个查询我想从数据库中读取所有数据。目前,查询机制如下所示:

0 投票
2 回答
1533 浏览

sql-server - 检查表是否存在 Spark jdbc

我正在使用 Spark JDBC 将一些数据从 Microsoft SQL 服务器读取到数据框中。当表不存在时(例如,它被意外删除)我得到一个异常:com.microsoft.sqlserver.jdbc.SQLServerException: Invalid object name 'TestAllData'。

我想创建一些机制来首先检查表是否存在,然后才读取数据。有没有办法使用 Spark JDBC 做到这一点?因为我尝试使用来自 Ms sql server 的 if exists 构造,但它不适用于使用 Spark 进行查询。

目前,我用于读取数据的代码如下所示:

0 投票
1 回答
375 浏览

apache-spark - 使用 simba 驱动程序将数据帧发送到 Bigquery

在尝试使用 Simba 驱动程序将数据帧写入 Bigquery 时。我得到以下异常。下面是数据框。在 bigquery 中创建了一个具有相同架构的表。

Simba 驱动程序抛出以下错误

下面是我使用的代码:

请让我知道是否缺少任何其他配置或哪里出错了。提前致谢!

0 投票
1 回答
243 浏览

scala - 使用 Scala 从 Apache Spark 中的 MySQL 读取时抛出 NullPointerException

我正在尝试从 MySQL 读取数据,但它正在抛出 NullPointerException。不知道是什么原因。代码在main.scala

代码在Processor.scala

代码PairingBatchUtil.scala

我希望查询的输出是:

但实际输出是:

0 投票
0 回答
107 浏览

apache-spark - 使用 javaagent 检测 Spark JDBC

我正在尝试在我的 Spark 应用程序中使用 Kamon JDBC Kanela 代理来检测 JDBC 调用。

-javaagent:kanela-agent-1.0.1.jar当我从 JAR 运行应用程序时,我能够通过在命令行上传递成功地在非火花测试应用程序中检测 JDBC 调用。当我这样做时,我会在控制台中看到 Kanela 横幅显示,并且可以看到当出现 SQL 错误时,我的失败语句处理器被调用。

根据我的研究,我应该能够将 javaagent 注入到 Spark 应用程序的执行程序中,方法是将以下内容传递给 spark-submit: --conf "spark.executor.extraJavaOptions=-javaagent:kanela-agent-1.0.1.jar"。然而,当我这样做时,虽然 Kamon 横幅在我调用 Kamon.init() 时显示在控制台上,但当出现 SQL 错误时,我的失败语句处理器不会被调用。

我想知道的事情:

  1. spark-jdbc 进行这些 JDBC 调用的方式是否会阻止 javaagent“看到”它们?
  2. 我对 Kamon.init() 的调用是否仅适用于 Spark 驱动程序中的代码,而不适用于执行程序?
  3. 您能想到的任何其他原因会阻止它起作用吗?
0 投票
0 回答
142 浏览

scala - 是否需要为 Spark jdbc 源添加 SaveMode Delete、Update 和 Upsert?

您认为是否有必要为 Delete、Update 和 Upsert 添加 SaveMode?如:

  • 保存模式.删除
  • 保存模式更新
  • SaveMode.Upsert

参考代码:JdbcRelationProvider.scala

我已经分析了它的 SaveTable 代码:JdbcUtils.scala,并认为使用删除、更新和合并语句来扩展当前的插入实现很容易,例如:

唯一额外的事情是我们需要为它们提供主键,它们可以调用相同的savePartition函数,只需将 insertStmt 替换为 runningStmt 覆盖所有插入/删除/更新/合并。

0 投票
1 回答
401 浏览

sql-server - 从 Pyspark 2.4 连接 SQL Server 以写入数据时出现问题

我正在使用 Pyspark 2.4,想将数据写入 SQL Server,但它不起作用。

我已将从此处下载的 jar 文件放在spark 路径中:

D:\spark-2.4.3-bin-hadoop2.7\spark-2.4.3-bin-hadoop2.7\jars\

但是,无济于事。以下是将数据写入 SQL Server 的 pyspark 代码。

出现以下错误:

我错过了什么吗?另外,我想在将新数据写入之前先截断表。DF 编写器中的 mode='overwrite' 是否也为 SQL Server 目标系统处理相同的问题?

0 投票
1 回答
1326 浏览

scala - 无主键列的 Spark jdbc 读取性能调优

我正在运行 spark 分析应用程序并直接使用 spark 读取 MSSQL Server 表(整个表)jdbc。该表有超过 30M 的记录,但没有任何主键列或整数列。由于表格没有这样的列,我无法使用partitionColumn,因此在阅读表格时需要花费太多时间。

在这种情况下,有什么方法可以提高性能,并在从关系数据库源(源可能是 Oracle、MSSQL Server、MySQL、DB2)读取数据时使用并行性。