Чтобы записать файл, я думаю, что следующий метод является наиболее эффективным и понятным: (вы можете добавить кавычки, если хотите)
public static void WriteCsv(DataTable dt, string path)
{
using (var writer = new StreamWriter(path)) {
writer.WriteLine(string.Join(",", dt.Columns.Cast<DataColumn>().Select(dc => dc.ColumnName)));
foreach (DataRow row in dt.Rows) {
writer.WriteLine(string.Join(",", row.ItemArray));
}
}
}
Вот что сработало для меня, как и предполагалось. Нужно --jars
../bin/spark-submit --master spark://Leos-MacBook-Pro.local:7077 --driver-class-path postgresql-42.2.5.jar --jars postgresql-42.2.5.jar server.py
--driver-class-path
здесь недостаточно. Jar драйвера также должен быть добавлен в путь к классу executor. Это обычно обрабатывается вместе, используя:
spark.jars.packages
/ --packages
spark.jars
/ --jars
, хотя вы все еще можете использовать spark.executor.extraClassPath
.
Объяснение :
С помощью драйвера источника JDBC отвечает за чтение метаданных (схемы) и исполнителей для фактического процесса извлечения данных.
Такое поведение является общим для разных внешних источников данных, поэтому всякий раз, когда вы используете не встроенный формат, вы должны распределять соответствующие jar-файлы по кластеру.
См. Также
Как использовать источник JDBC для записи и чтения данных в (Py) Spark?