问题标签 [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.
apache-spark-sql - 错误:列“blob”是 jsonb 类型,但表达式是字符类型
试图读取镶木地板文件并转储到 Postgres。postgres 表中的一列是 JSONB 数据类型,在 parquet 中它是字符串格式。
它失败了这个错误:
SO上的某人建议将stringtype=unspecified
Postgres确定为字符串的数据类型,但它似乎不起作用。
sql-server - spark-jdbc 中的预处理语句
我正在尝试使用具有指定偏移量的 Spark jdbc 从 MSSQL 数据库中读取数据。所以数据应该只在指定的时间戳之后加载,这就是这个偏移量。我试图通过在 jdbc 配置中提供查询来实现它,但是,我没有发现用参数化值创建准备好的语句的可能性。在这种情况下,我想参数化一个偏移量,该偏移量在每次应用程序启动后都会改变。如何使用 jdbc 选项实现它?
所有数据库配置都驻留在 application.conf 文件中。这是我从数据库中读取的方式:
相反,查询应该看起来像这样:
sql-server - 计算分区 Spark JDBC 的下限和上限
我使用带有 Scala 的 Spark-jdbc 从 MS SQL 服务器读取数据,我想按指定的列对这些数据进行分区。我不想手动设置分区列的下限和上限。我可以在该字段中读取某种最大值和最小值并将其设置为上限/下限吗?另外,使用这个查询我想从数据库中读取所有数据。目前,查询机制如下所示:
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 进行查询。
目前,我用于读取数据的代码如下所示:
apache-spark - 使用 simba 驱动程序将数据帧发送到 Bigquery
在尝试使用 Simba 驱动程序将数据帧写入 Bigquery 时。我得到以下异常。下面是数据框。在 bigquery 中创建了一个具有相同架构的表。
Simba 驱动程序抛出以下错误
下面是我使用的代码:
请让我知道是否缺少任何其他配置或哪里出错了。提前致谢!
scala - 使用 Scala 从 Apache Spark 中的 MySQL 读取时抛出 NullPointerException
我正在尝试从 MySQL 读取数据,但它正在抛出 NullPointerException。不知道是什么原因。代码在main.scala
代码在Processor.scala
代码PairingBatchUtil.scala
:
我希望查询的输出是:
但实际输出是:
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 错误时,我的失败语句处理器不会被调用。
我想知道的事情:
- spark-jdbc 进行这些 JDBC 调用的方式是否会阻止 javaagent“看到”它们?
- 我对 Kamon.init() 的调用是否仅适用于 Spark 驱动程序中的代码,而不适用于执行程序?
- 您能想到的任何其他原因会阻止它起作用吗?
scala - 是否需要为 Spark jdbc 源添加 SaveMode Delete、Update 和 Upsert?
您认为是否有必要为 Delete、Update 和 Upsert 添加 SaveMode?如:
- 保存模式.删除
- 保存模式更新
- SaveMode.Upsert
参考代码:JdbcRelationProvider.scala
我已经分析了它的 SaveTable 代码:JdbcUtils.scala,并认为使用删除、更新和合并语句来扩展当前的插入实现很容易,例如:
唯一额外的事情是我们需要为它们提供主键,它们可以调用相同的savePartition函数,只需将 insertStmt 替换为 runningStmt 覆盖所有插入/删除/更新/合并。
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 目标系统处理相同的问题?
scala - 无主键列的 Spark jdbc 读取性能调优
我正在运行 spark 分析应用程序并直接使用 spark 读取 MSSQL Server 表(整个表)jdbc
。该表有超过 30M 的记录,但没有任何主键列或整数列。由于表格没有这样的列,我无法使用partitionColumn
,因此在阅读表格时需要花费太多时间。
在这种情况下,有什么方法可以提高性能,并在从关系数据库源(源可能是 Oracle、MSSQL Server、MySQL、DB2)读取数据时使用并行性。