#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);
}
});
Эта строка кода наконец-то помогла мне. Не нужно было преобразовывать его ни в какой формат.