我正在从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);
我无法使用分区列,因为我没有主键列。 任何人都可以提出建议以提高性能。
谢谢
答案 0 :(得分:1)
可以使用许多方法来优化DF的创建。您可能要删除repartition
,并使用predicates来并行化Spark动作的数据检索过程。
如果过滤器不是基于主键或索引列,则有可能浏览ROWID
。