1

我正在从没有主键列的 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);

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

谢谢

4

1 回答 1

1

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

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

于 2018-09-21T15:25:39.487 回答