отметка времени оракула не поддерживается в java.sql scala - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь запросить таблицу oracle db, используя spark sql. Существует column(RESERVATION.START_DATE) с типом данных timestamp, и когда я запускаю запрос, я получаю ошибку unsupported type -101. Если я приведу преобразование / приведение столбца к типу string / varchar или date, я получу null записей в моем DataFrame.

Я пытался использовать функцию приведения to_char, to_date для приведения значения метки времени к строке или дате, если я запускаю запрос вручную в DBConsole, я получаю правильные результаты, но если я запускаю его через программу Scala используя spark-sql я получаю ошибку неподдерживаемого типа или, если я приведу столбец к строке / дате, я получу нулевые значения в DataFrame.

Оба запроса при простом использовании oracle DBConsole дают правильные результаты без ошибок. Но если такие же запросы выполняются с использованием spark-sql в Scala i, вы получите ошибки

SELECT to_char(RESERVATION.START_DATE, 'DD-MM-YY HH:MI:SS.FFFFFF TZH:TZM') as SDATE
  FROM RESERVATION  

SELECT RESERVATION.START_DATE,
  FROM RESERVATION 

Результат для первого запроса выглядит следующим образом (фокусируется только на первых трех значениях. Третье значение - столбец START_DATE)

[ноль],

[ноль],
[NULL]

Результат ошибки для второго запроса:

Exception in thread "main" java.sql.SQLException: Unsupported type -101
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.org$apache$spark$sql$execution$datasources$jdbc$JdbcUtils$$getCatalystType(JdbcUtils.scala:209)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$5.apply(JdbcUtils.scala:246)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$5.apply(JdbcUtils.scala:246)
    at scala.Option.getOrElse(Option.scala:121)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.getSchema(JdbcUtils.scala:245)
    at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:64)
    at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.<init>(JDBCRelation.scala:113)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:45)
    at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:330)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:152)
    at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:125)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...