Spark создать схему базы данных (если не существует) при записи данных в базу данных - PullRequest
0 голосов
/ 02 апреля 2020

Я записываю данные из CSV-файла в базу данных (PostgreSQL), используя spark (Java). CSV в качестве примера кода фрейма данных ниже

   SQLContext sqlContext = new SQLContext(sc);

   StructType sparkDataSchema = new StructType(structFields);
   Dataset < Row > df = sqlContext.read().format("com.databricks.spark.csv").schema(sparkDataSchema)
               .option("delimiter", dataDelimeter).option("header", true)
               .load(paths.split(","));

Теперь я записываю содержимое csv-файла в PostgreSQL

df.write().option("truncate", true).mode(SaveMode.Overwrite)
.option("createTableColumnTypes", customSchema).
jdbc(url, dbSchemaName+"."+tableName, connectionProperties);

Если вы заметили здесь, я предоставляю dbSchemaName + "." + tableName в jdb c 2-й параметр. Когда я запускаю приведенный выше код, он выдает ошибку dbSchemaName не существует. Если я не предоставляю dbSchemaName, тогда данные загружаются в схему PostgreSQL по умолчанию "publi c". То, что я хочу здесь, я хочу загрузить данные, отличные от PostgreSQL стандартная схема "publi c" по умолчанию, и, если конкретная схема базы данных не существует, спарк создастся автоматически. Я не нахожу никаких вариантов, как этого добиться. Любая помощь очень ценится.

...