node.js - Node.JS 如何创建 parquet 文件并保存到 Minio
问题描述
以 NPM 文档 ( https://www.npmjs.com/package/parquets ) 中的以下示例为例,我将如何将生成的 parquet 文件直接写入 minio。我想避免将镶木地板文件写入磁盘,然后进行第二次操作将文件移动到 minio。
下面的示例在调用 close() 后立即将文件写入磁盘。
// advanced fruits table
let schema = new ParquetSchema({
name: { type: 'UTF8' },
colours: { type: 'UTF8', repeated: true },
stock: {
repeated: true,
fields: {
price: { type: 'DOUBLE' },
quantity: { type: 'INT64' },
}
}
});
// the above schema allows us to store the following rows:
let writer = await ParquetWriter.openFile(schema, 'fruits.parquet');
await writer.appendRow({
name: 'banana',
colours: ['yellow'],
stock: [
{ price: 2.45, quantity: 16 },
{ price: 2.60, quantity: 420 }
]
});
await writer.appendRow({
name: 'apple',
colours: ['red', 'green'],
stock: [
{ price: 1.20, quantity: 42 },
{ price: 1.30, quantity: 230 }
]
});
await writer.close();
解决方案
用于/tmp
编写您的 parquet 文件,然后使用 minio 的 sdk 上传该文件。
为确保它正确缩放,只需包含一个随机字符串或UUID
您将其存储在 tmp 中的文件名。
不幸的是,我在库中找不到任何流选项,因此除非有人知道如何从该库返回 Stream 对象,否则您无法完全按照您的要求进行操作。
推荐阅读
- visual-studio-code - Vscode Material Icon不为centains文件夹呈现图标
- xml - Powershell:无法读取 XML 数据类型以正确更改它
- node.js - OAuth 的 ADP API 客户端密钥
- asp.net-core - ITokenAcquisition 令牌刷新和过期功能
- ios - 如何使用 AWS S3 发布 iOS 库?
- r - 如何使用 R、ggplot 和 plotly 在堆积条形图的线性和对数刻度之间切换?
- amazon-web-services - 通过 Cloudformation 声明的 API Gateway Cognito 授权者需要从管理控制台部署才能正常工作
- python - 无法理解如何使用 RabbitMQ
- python - Python中key的字典理解:[1,2,3]
- excel - 当单元格中有数字时,将其计数在与列标题匹配的列中