火花 jdbc 读取调整 where 没有主键的表

Posted

技术标签:

【中文标题】火花 jdbc 读取调整 where 没有主键的表【英文标题】:spark jdbc read tuning where table without primary key 【发布时间】:2018-09-21 14:20:19 【问题描述】:

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

oracleDf = hiveContext.read().format("jdbc").option("url", url)
                        .option("dbtable", queryToExecute)
                        .option("numPartitions ","5")
                        .option("fetchSize","1000000")
                        .option("user", use).option("password", pwd).option("driver", driver).load().repartition(5);

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

谢谢

【问题讨论】:

因此,目前该列需要为数字。如果不需要是主键的一部分。 如果有人找到答案,请告诉我们。我也遇到了同样的情况。 【参考方案1】:

有很多东西可以用来优化您的 DF 创建。您可能希望删除 repartition 并使用 predicates 来并行处理 Spark 操作的数据检索过程。

如果过滤器不是基于主键或索引列,则可以探索ROWID

【讨论】:

以上是关于火花 jdbc 读取调整 where 没有主键的表的主要内容,如果未能解决你的问题,请参考以下文章

Oracle对没有主键的表分页

维度建模:如何创建没有代理主键的表?

将 DbUnit 与没有主键的表一起使用

sql 查询没有主键的表

是否可以在柴油中使用没有主键的表?锈

脚本找出mysql中缺少主键的表