Spark 2.11 с Java, сохранение DataFrame в Oracle создает столбцы с двойными кавычками

Используя следующий код в Spark (Java), мы сохраняем кадр данных в Oracle, он также создает таблицу, если она не существует.

Dataset<Row> someAccountDF = sparkSession.createDataFrame(impalaAccountsDF.toJavaRDD(), AccountSchema.getSchema());
dataFrame.write().mode(saveMode).jdbc(connectionUrl, tableName, connectionParams);

Теперь он создает столбцы с двойными кавычками, например:

CREATE TABLE "SCHEMA"."ACCOUNT" 
   (    "primaryidentifier" VARCHAR2(255 BYTE), 
    "systemdata" VARCHAR2(255 BYTE), ......
)

Итак, когда я запрашиваю
select primaryidentifier from account; //Не работает
, но когда я запрашиваю
select "primaryidentifier" from account; //Работает

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

Out SchemaClass выглядит следующим образом. Я хотел бы иметь что-то вроде Varchar2 вместо StringType:

public class AccountSchema {
    public StructType getSchema() {

        StructType schemaTyped = new StructType()
                .add("primaryidentifier", StringType)
                .add("systemdata", StringType)
.............}
}

Я видел этот вопрос, но не смог его выполнить ( Я очень немного знаю Scala)


person abhihello123    schedule 15.10.2017    source источник
comment
Просто скопируйте/вставьте код из ответа, который вы указали, после инициализации контекста и перед записью в базу данных. Oracle чувствителен к регистру, поэтому пользователь отменил регистрацию диалекта оракула JDBC по умолчанию и перезаписал изменение метода quoteIdentifier для удаления кавычек.   -  person gasparms    schedule 15.10.2017
comment
@gasparms, значит, мне не нужно никаких изменений в моей учетной записи. Верно? Можете ли вы преобразовать этот код и дать ответ на Java. Я новичок в Spark и не знаю Scala, поэтому не могу правильно выполнить преобразование.   -  person abhihello123    schedule 15.10.2017