Как читать несколько паркетных файлов с помощью Type Script? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть папка с файлами паркета.

Как прочитать их все и преобразовать в 1 большой текстовый файл?

Я использую библиотеку parquetjs для чтения 1 файла:

(
    async () => {
        // create new ParquetReader that reads from 'fruits.parquet`
        let reader = await parquet.ParquetReader.openFile('fruits.parquet');

        // create a new cursor
        let cursor = reader.getCursor();

        // read all records from the file and print them
        let record = null;
        while (record = await cursor.next()) {
            console.log(record);
        }

    }

) ();

Нужна помощь в чтении нескольких файлов одновременно и объединении их ..

1 Ответ

0 голосов
/ 04 марта 2019
  1. Преобразовать функцию aynsc, чтобы получить параметр filename.Сделайте так, чтобы функция возвращала record
  2. Создайте массив filename
  3. Используйте Array.map для преобразования массива filename в Promise массив
  4. Использование Promise.all для ожидания чтения всех файлов
  5. Использование String.join для объединения всехrecord s в одну строку

Преобразование функции async в filename

Преобразование файла async в параметр filename

const readFile = async(filename) => {
  let reader = await parquet.ParquetReader.openFile(filename);
  let cursor = reader.getCursor();

  let record = '';
  let currentContent = '';
  while (currentContent = await cursor.next()) {
    record += currentContent;
  }

  return record;
};

Чтение и объединение всех файлов

const filenames = ['f1.parquet', 'f2.parquet', 'f3.parquet'];
const readPromises = filenames.map(f => readFile(f));
const allPromises = Promise.all(readPromises);

// Read and combine
allPromises.then(contentsArray => contentsArray.join('\n'))
  .then(joinedContent => console.log(joinedContent))
  .catch(console.error);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...