2016-10-04 5 views
0

Теперь я использую Spark для подключения моей базы данных оракула. Однако существует тип столбца с именем «TIMESTAMP WITH TIMEZONE», который является определенным столбцом в Oracle. Когда я загружаю данные из таблицы, чем столбец этого типа, он выдает ошибку «java.sql.SQLException: Unsupported type -101».Как выбрать конкретные столбцы через Spack JDBC?

Кто-нибудь знает, как загрузить определенные столбцы из таблицы? Тогда я могу избежать выбора столбца «TIMESTAMP WITH TIMEZONE». Будет лучше, если кто-то сможет выяснить ошибку «java.sql.SQLException: Unsupported type -101». Но я думаю, что это может быть ошибка Искры.

Мой код следующий, спасибо большое.

spark = SparkSession\ 
    .builder\ 
    .appName("TestSQL")\ 
    .getOrCreate() 
orc = spark.read \ 
    .format("jdbc") \ 
    .option("url", "jdbc:oracle:thin:xxx/[email protected]:1521/database") \ 
    .option("dbtable", "xxx.xxx") \ 
    .load() 

ответ

0

В options, вы можете передать ключ sql query in dbtable. В запросе sql вы можете выбрать необходимые столбцы.

Например:

final String dbTable = 
     "(select emp_no, concat_ws(' ', first_name, last_name) as full_name from employees) as employees_name"; 

Dataset<Row> jdbcDF = 
     sparkSession.read().jdbc(CONNECTION_URL, dbTable, "emp_no", 10001, 499999, 10, connectionProperties); 

* Код на Яве

Источник: Loading database data using Spark 2.0 Data Sources API

+0

Спасибо большое! Должны ли они быть java-кодами? Я передаю SQL-запрос в параметре dbtable в моих кодах python, получил ошибку «недопустимое имя таблицы». –

+0

Я не уверен, в java это работает –

+0

Большое вам спасибо, я попробую немного java. –

0

Другой подход может быть создание представлений на Oracle, так что вы можете справиться с Oracle конкретные типы данных внутри самой базы данных.

Смежные вопросы