Оптимизация файлов SPARk SQL yml

#apache-spark #apache-spark-sql

Вопрос:

Мое требование-прочитать два файла: один на предыдущую дату и один на сегодняшнюю дату. И объединил данные из обоих файлов и сохранил их в новом файле, в имени которого будет указана дата.

Например: файл_24012021.avro-файл предыдущей даты, а файл_25012021.csv-файл сегодняшней даты. Таким образом, после объединения данных данные будут сохранены в файле 25012021.avro. И файл_25012021.csv может содержать данные максимум за 100 дней.

Для достижения этой цели я написал YML, как показано ниже.

 frameworkComponents:
 prev_file:
    inputDirectoryPath: <path of the file>
    componentName: prev_file
    componentType: inputLoader
    hadoopfileFormat: avro
    findLastNonContiguousSetSize: 1
    findLastContiguousSetSize: -1
new_file:
    inputDirectoryPath: <path of the file>
    componentName: new_file
    componentType: inputLoader
    hadoopfileFormat: csv
    fixedWidthFileMetaData: |-
    [{“fieldname”: “ID”,”startPos”: 1,”endPos”: 3,”colType”: “CHAR”}, {“fieldname”: “ID_1”,”startPos”: 4,”endPos”: 6,”colType”: “CHAR”}….. for all columns present in file]
    skipInitialNoofLines: 1
    skipLastNoofLines: 1

selectstmt:
    componentName: selectstmt
    componentType: executeSparlSQL
    sql: |-
            select ID,ID_1,…allcolumn from new_file
            union
            select ID,ID_1…allcolumn from prev_file where file_date <= rundate -100

write_file:
    componentName: write_file
    componentType: outputWriter
    hadoopfileFormat: avro
    numberofPartition: 1
    outputDirectoryPath: <path of the file>

precedence:
     selectstmt:
         dependsOn:
            prev_file: prev_file
            new_file: new_file

     write_file:
         dependsOn:
            selectstmt: selectstmt
 

Моему коду требуется более 1 часа, чтобы объединить данные и сгенерировать файл.

Не мог бы кто-нибудь, пожалуйста, подсказать мне, как настроить это так, чтобы это не занимало так много времени.