Как загрузить файл паркетной доски в корзину s3 в nodejs?

#node.js #amazon-s3 #parquet #aws-sdk-js #parquetjs

Вопрос:

Я использую библиотеку parquetjs. Это позволяет мне создать файл parquet и сохранить его локально, но я хочу отправить его непосредственно в корзину s3 после его создания. Онлайн-примеры на самом деле не помогли. Я помещаю код, который я использую ниже.

 const parquet = require('parquetjs');

const parquetSchema = new parquet.ParquetSchema({
  name: { type: 'UTF8' },
  age: { type: 'INT64' }
});

var writer = await parquet.ParquetWriter.openFile(parquetSchema, 'fruits.parquet');

  rows.forEach(async (entry, i) => {
    // append a few rows to the file
    await writer.appendRow({
      name: entry.name,
      age: entry.age
    });
  });

  await writer.close();
 

После закрытия кода он сохраняется в папке. Я пытаюсь использовать обычную s3.putObject функцию AWS SDK, но для файлов parquet это не работает. Он загружает пустой файл с именем parquet.
Я попытался вытащить локальный файл через fs модуль и прикрепить его в качестве тела, но это тоже не работает.

Ответ №1:

 var fileStream = fs.createReadStream("F:/directory/fileName.ext");
var putParams = {
    Bucket: s3bucket,
    Key: s3key,
    Body: fileStream
};
s3.putObject(putParams, function(putErr, putData){
    if(putErr){
        console.error(putErr);
    } else {
        console.log(putData);
    }
}); 

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