apache-arrow:如何使用JavaScript API基于Schema创建空Table并解决报错
你代码的问题出在类型引用错误:你导入的Type是FlatBuffer生成的内部枚举定义,仅用作类型ID标识,而Field.new的第二个参数要求传入Arrow的具体类型实例,而非原始枚举值,这才导致框架识别不到类型ID抛出报错。
修复步骤
- 移除对
../node_modules/apache-arrow/fb/Schema下Type的导入 - 从Arrow的主入口导入你需要的对应精度类型构造器,例如双精度浮点数用
Float64、32位有符号整数用Int32 - 构造字段时传入实例化的类型对象即可
完整可运行代码
import { Schema, Field, Table, Float64, Int32 } from '../node_modules/apache-arrow/Arrow.dom' // 字段第二个参数传入实例化的具体类型 const field1 = Field.new('field1', new Float64()); const field2 = Field.new('field2', new Int32()); const schema = new Schema([field1, field2]); const table = Table.empty(schema) console.log(table)
常用类型参考
如果需要其他类型,可按需替换构造器:
- 单精度浮点数:
new Float32() - 64位有符号整数:
new Int64() - 32位无符号整数:
new Uint32() - 字符串类型:
new Utf8() - 布尔类型:
new Bool()
生成的空表完全符合指定Schema,后续可直接通过concat等方法追加符合结构的RecordBatch数据。
内容的提问来源于stack exchange,提问作者Rodrigo Belli
相关产品推荐
相关产品推荐

