Я новичок в спарке, и пытался записать фрейм данных в таблицу db2. Я получаю ошибку:
Exception in thread "main" java.lang.IllegalArgumentException: Can't get JDBC type for struct <data:int, day:int, hours:int, minutes:int, month:int, seconds:int, time:bigint, timeZoneOffset:int, year:int>
Моя схема базы данных
localId <-- Integer type
effectiveDate <-- Timestamp
activityDate <-- Timestamp
inDate <-- Timestamp
outDate <-- Timestamp
Я создал класс POJO для моей таблицы БД, который выглядит следующим образом
public class StowageTable {
private long localId;
private Date effectiveDate;
private Date activityDate;
private Date inDate;
private Date outDate;
//setters and getters
}
Затем я в основном читаю csv, который имеет ту же схему, что и таблица db, следующим образом:
JavaRDD<String> dataFromCSV = javaSparkContext.textFile(fileURL);
//The I create a JavaRDD of the POJO type
JavaRDD<StowageTable> dataToPOJO = dataFromCSV.map((Function<String, StowageTable) line -> {
String[] fields = line.split(",");
StowageTable st = createNewStowageTable(fields);
return st;
});
//converting the RDD to DataFrame
DataFrame stowageTableDF = sqlContext.createDataFrame(dataToPOJO, StowageTable.class);
//call jdbc persister
persistToTable(stowageTableDF);
Мой persistToTable(DataFrame df)
метод выглядит следующим образом:
private void persistToTable(DataFrame df) {
Class.forName("")//driver here
//skipping a few lines for brevity
df.write().mode(SaveMode.Append).jdbc(url, table, connectionProperties);
}
Я нашел несколько решений здесь: Запись Spark DataFrame в JDBC - Невозможно получить тип JDBC для массива >
и java.lang.IllegalArgumentException: не удается получить тип JDBC для массива
но не смог найти что-либо, что решает проблему типа данных дата-время. Пожалуйста, предложите мне какое-нибудь решение. Я на спарке 1.6.3.