我使用的是Spark 3.0,在我的Java程序中,我从Oracle DB中的视图中查询数据。我使用Java API JdbcRDD来查询视图。我遇到的问题是视图不包含任何ID或时间戳列。因此,我无法使用lowerBound和upperBound值构造我的SQL查询。请在下面找到我需要在Spark中运行的示例查询。这里,exp_stg.usr和exp_stg.prtcpnt是向我公开的两个视图。
"SELECT a.participant,
a.desc,
b.firstname,
b.lastname,
b.dept,
b.telno,
b.emailaddr
FROM usr_stg.prtcpnt a
LEFT OUTER JOIN usr_stg.usr b
ON a.participant = b.participant
WHERE a.class = 'SpSession' "我尝试在spark和join中使用临时表,但查询性能很差,因为每个视图大约有13,000,000行。因此,我尝试在Oracle DB中使用join查询。
发布于 2020-09-13 22:37:54
我能够在查询中使用ROWNUM克服这个约束。使用ROWNUM作为lowerBound和upperBound,我现在可以使用JdbcRDD获取数据。`
SELECT ROWNUM as id, a.participant,
a.desc,
b.firstname,
b.lastname,
b.dept,
b.telno,
b.emailaddr
FROM usr_stg.prtcpnt a
LEFT OUTER JOIN usr_stg.usr b
ON a.participant = b.participant
WHERE a.class = 'SpSession' and ?<=ROWNUM and ROWNUM<=?"`https://stackoverflow.com/questions/63869990
复制相似问题