Используя следующий код в 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)