Прежде всего, вам не нужно хранить данные во временной таблице для последующей записи в таблицу кустов. Вы можете сразу прочитать файл и записать результат, используя API DataFrameWriter. Это уменьшит ваш код на один шаг.
Вы можете написать следующее:
val spark = SparkSession.builder.enableHiveSupport().getOrCreate()
val df = spark.read.csv(filePath) //Add header or delimiter options if needed
inputDF.write.mode("append").format(outputFormat).saveAsTable(outputDB + "." + outputTableName)
Здесь outputFormat
будет orc
, outputDB
будет вашим ульем база данных и outputTableName
будет вашим именем таблицы Hive.
Я думаю, что при использовании описанной выше техники ваше время записи значительно сократится. Также, пожалуйста, укажите ресурсы, которые использует ваша работа, и я смогу еще больше оптимизировать их.
Другая оптимизация, которую вы можете использовать, - это разделение вашего фрейма данных во время записи. Это ускорит операцию записи. Тем не менее, вам нужно тщательно определить столбцы, на которые нужно разбить раздел, чтобы не создавать много разделов.