Проблема в запросе, который отправляется в Mainframe DB2, выбор метода spark jdbc, используемый для нажатия «WITH UR», требует изменения.
Используемый здесь метод чтения JCDB *
def jdbc(url: String, table: String, properties: Properties): DataFrame
и в этом методе скажем, что мы отправляем следующий запрос в db2 sql engine
"select a, b, c, d from table where d is not null with UR as table"
, это не тот же запрос, выдвинутый в ядре SQL мэйнфрейма DB2. искра посылает sql как
select a, b, c from (select a, b, c from table where d is not null with UR) as table
вот тут и начались неприятности.
если вы хотите увидеть ту же ошибку для sql в Mainframe SPUFI или QMF или с другим инструментом, попробуйте выполнить построенный запрос с помощью spark, а не то, что мы написали в коде.
Чтобы преодолеть эту проблему при добавлении синтаксиса «WITH UR» в SQL вместо вышеуказанного метода spark jdbc, переключитесь на следующий метод spark jdbc, который позволяет нам создавать предикаты.
def jdbc(url: String, table: String, predicates: Array[String],
connectionProperties: Properties): DataFrame
нажмите sql как ""select a, b, c, d from table as tbl"
с predicates= Array("d is not null with UR")
в этом случае ожидаемый запрос сдвигается вниз. Надеюсь, что это поможет вам понять, как ее решить.
здесь вы можете увидеть более подробную информацию о методах чтения JDBC-спарк- Ссылка