Я пытаюсь записать записи DF в таблицу Teradata, используя Spark JDBC.
Пример кода:
df.write.format("jdbc")\
.option("url", jdbcUrl)\
.option("driver", "com.teradata.jdbc.TeraDriver") \
.option("dbtable", dbTableName) \
.option("user", userName)\
.option("password", passWord) \
.option("numPartitions", 3) \
.option("truncate", True) \
.mode('overwrite')\
.save()
Это всегда отбрасывать таблицу исоздайте таблицу снова.Когда он снова создает таблицу, он создает таблицу как таблицу SET вместо таблицы MULTISET.
Согласно документации Spark, когда я передаю truncate как True, он должен обрезать таблицу вместо удаления таблицы.
Это опция, связанная с JDBC-писателем.Когда SaveMode.Overwrite включен, эта опция заставляет Spark обрезать существующую таблицу вместо ее удаления и повторного создания.Это может быть более эффективным и предотвращает удаление метаданных таблицы (например, индексов).Однако в некоторых случаях это не будет работать, например, когда новые данные имеют другую схему.По умолчанию используется значение false.Эта опция применима только к письму.