问题标签 [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 投票
1 回答
1011 浏览

pyspark - pySpark jdbc 写入错误:调用 o43.jdbc 时出错。:scala.MatchError:空

我正在尝试使用 pySpark 将简单的 spark 数据帧写入 db2 数据库。数据框只有一列,其数据类型为 double。

这是只有一行和一列的数据框: PySpark 数据框

这是数据框架构: PySpark 数据框架构

当我尝试使用以下语法将此数据帧写入 db2 表时:

它第一次在数据库中创建表没有任何问题,但是如果我第二次运行代码,它会引发异常: 错误日志

在 DB2 端,列数据类型也是DOUBLE.

不知道我错过了什么。

0 投票
0 回答
105 浏览

apache-spark - 无法在 spark 2.3 中加入具有常见列名的 jdbc 表

在早期版本的 spark 中,我有两个 sql 表,

我可以像这样查询它们:

这将生成以下查询:

但是使用 spark 2.3 我现在收到错误消息:

尽管我永远不应该将该列加载到火花中。看起来选择可能不再被推送到数据库中。

有没有办法解决这个问题?

0 投票
0 回答
253 浏览

mysql - Apache Spark 使用 JDBC 连接器写入 MySQL(写入模式:忽略)未按预期执行

我将我的表以 ID 作为主键存储在 MySQL 中。我想使用 Spark 写入 Mysql,其中它忽略数据框中已经存在于 Mysql 中的行(基于主键)并且只写入新的行集。

当我尝试使用以下内容将 Spark Dataframe(包含 ID 3 和 4)写入此表时SaveMode.Append

以下是我实现的结果:

但是,当我使用SaveMode.Ignore(ID 为 4、5、6)时,整个数据帧写入都会被忽略,而不仅仅是 ID 4 会被忽略。

这种行为正常吗?如果我想ID 5 and 6在数据框包含时存储ID 4, 5 and 6怎么办?还有其他推荐的方法吗?

0 投票
1 回答
852 浏览

oracle - Spark JDBC:DataFrameReader 无法读取数据类型为 ROWID 的 Oracle 表

我正在尝试使用 spark.read.format 读取 Oracle 表,它适用于所有表,除了少数表具有任何数据类型为 ROWID 的列。

下面是我的代码

我收到以下错误

分析:我检查了JdbcUtils对象,发现java.sql.Types.ROWID这个case映射到spark的LongType。但是在 Oracle JDBC 驱动程序中没有为 ROWID 类型实现 getLong。我有信心,如果我设法将它映射到 StringType 那么它将起作用,但我找不到任何解决方法。请在此处提出解决方案。

截至目前,我正在使用 ResultSet 读取数据,然后使用自定义模式将其转换为 DataFrame,但它会破坏并行性。还想检查是否有任何选项来修改 JdbcUtils 的代码,因为我无法扩展 DataFrameReader 来创建自定义的,因为在类定义中提到了“private [sql]”。

0 投票
1 回答
495 浏览

apache-spark-sql - 火花 jdbc 读取调整 where 没有主键的表

我正在从没有主键列的 oracle 表中读取 30M 记录。spark jdbc 读取挂起并且未获取任何数据。我可以在几秒钟内从 Oracle SQLDeveloper 获得相同查询的结果。

我不能使用分区列,因为我没有主键列。任何人都可以建议提高性能。

谢谢

0 投票
1 回答
1248 浏览

apache-spark - 如果列的数据类型为:String,是否可以在 Spark-JDBC 的“option(”partitionColumn“,”colname“)”中定义“partitionColumn”?

我正在尝试将数据从 RDBMS 加载到 HDFS 上的配置单元表中。我正在通过以下方式读取 RDBMS 表:

我在执行程序日志中看到option("numPartitions",20)没有正确给出,并且整个数据都转储到了一个执行程序中。

现在有提供分区列、下限和上限的选项,如下所示:

仅当我的分区列是数字数据类型时,上述一个才有效。在我正在阅读的表中,它是基于 column 分区的location。它的整体大小为 5gb,表中有 20 个不同的分区。我在表中有 20 个不同的位置。无论如何我可以根据表的分区列读取分区中的表: location 吗?

谁能告诉我它是否可以实施?

0 投票
1 回答
4510 浏览

azure - 如何在 pyspark 中使用 azure-sqldb-spark 连接器

我想每天使用 PySpark 将大约 10 GB 的数据写入 Azure SQL 服务器数据库。目前使用的是 JDBC 驱动程序,这需要数小时才能逐个插入语句。

我计划使用 azure-sqldb-spark 连接器,它声称使用批量插入来加速写入。

我浏览了官方文档:https ://github.com/Azure/azure-sqldb-spark 。该库是用 scala 编写的,基本上需要使用 2 个 scala 类:

可以像这样在pyspark中使用它(使用sc._jvm):

我不是 Python 方面的专家。任何人都可以帮助我完成这个完整的片段。

0 投票
1 回答
1736 浏览

apache-spark - Spark JDBC 读取仅在一个分区中结束

我有以下代码片段,用于从我从中提取所有可用数据的 Postgresql 表中读取数据,即select * from table_name

其中 var_dict 是一个字典,其中包含我的变量,例如 spark context 、 database creds 等。

即使我拉动数百万行,下面代码的结果也总是返回 1:

如果我在这里做错了什么,有人可以建议吗?理想情况下,我应该使用最大的可用资源,而不是仅将数据拉到我的主节点。

partitionColumn、lowerBound、upperBound 不能用作我的分区列是时间戳而不是数字。

0 投票
0 回答
351 浏览

postgresql - PGBouncer 中的 Spark JDBC 和事务池

我正在使用 Spark JDBC DataFramReader 来查询 Postgres DB,查询被执行抛出 PGBouncer 在事务池中工作。

从第二个执行的查询中,我收到以下错误:

此错误是否有解决方法?

我试图添加prepareThreshold=0到连接字符串。

0 投票
1 回答
386 浏览

scala - 如何在使用 spark-submit 命令时修复 Logger 初始化错误

运行我的 spark-jdbc 作业以连接到另一个数据库时遇到问题。但我之前有错误。org.apache.spark.internal.Logging$class.initializeLogIfNecessary(Logging.scala:99) 处的线程“主”java.lang.AbstractMethodError 中的异常

我的 Logger 无法被 scala 初始化。我正在使用 scala 2.11 和相同版本的 spark。

无法通过 IDE 调试此问题,因为一切都很好,但是当我运行 spark-submit 时,会发生错误。