Apache-spark изменяет Data_TYPE столбца БД при записи данных в таблицу в oracle - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть Java-программа, которая выполняет код Spark.

Я использую приведенный ниже код для записи Dataset в таблицу базы данных:

Encoder<OutputParams> outputEncoderforsummary = Encoders.bean(OutputParams.class);
Dataset<OutputParams> outputDataSetforsummary = outputDataSet1.map(rulesParamBeanforsummary->  outputforsummary(rulesParamBeanforsummary), outputEncoderforsummary);
outputDataSetforsummary.write().mode("append").format("jdbc").option("url", connection).option("dbtable", TXN_SUMMARY).save();

Согласно коду, OutputParams.java используется в качестве кодера. он содержит все поля таблицы TXN_SUMMARY. В таблице около 113 полей.

OutputParams.java

public class OutputParams {

  String ACCT_ID;

  public String getACCT_ID() {
    return ACCT_ID;
  }
  public void setACCT_ID(String aCCT_ID) {
    ACCT_ID = aCCT_ID;
  }

  //Other fields and setter getters here.

}

одно из полей / столбцов: ACCT_ID Тип данных: CHAR(10 BYTE)

После выполнения write(), когда я проверял тип данных столбца ACCT_ID, он изменяется на: VARCHAR2(255 BYTE), также изменяется тип данных всех остальных столбцов.

причина, которая приходит мне в голову, заключается в том, что класс кодировщика имеет то же поле с типом данных String, и, следовательно, во время записи преобразовал в VARCHAR(255)

Но я хочу понять, меняет ли Spark тип данных столбцов в базе данных при записи данных в них? Есть ли вариант, чтобы предотвратить то же самое?

Версия Spark: 2.3.0

...