dask.bag.Bag.to_avro
dask.bag.Bag.to_avro¶
- Bag.to_avro(filename, schema, name_function=None, storage_options=None, codec='null', sync_interval=16000, metadata=None, compute=True, **kwargs)¶
将数据包写入一组 Avro 文件
该模式是一个描述数据的复杂字典,参见 https://avro.apache.org/docs/1.8.2/gettingstartedpython.html#Defining+a+schema 和 https://fastavro.readthedocs.io/en/latest/writer.html 。其结构如下:
{'name': 'Test', 'namespace': 'Test', 'doc': 'Descriptive text', 'type': 'record', 'fields': [ {'name': 'a', 'type': 'int'}, ]}
其中“name”字段是必需的,但“namespace”和“doc”是可选的描述符;“type”必须始终为“record”。字段列表应对输入记录的每个键都有一个条目,类型类似于Avro规范中的原始、复杂或逻辑类型( https://avro.apache.org/docs/1.8.2/spec.html )。
每个输入分区生成一个Avro文件。
- 参数
- b: dask.bag.Bag
- 文件名: 列表或字符串
要写入的文件名。如果是列表,数量必须与分区数量匹配。如果是字符串,必须包含通配符“*”,该通配符将使用 name_function 进行扩展。
- schema: dict
Avro 模式字典,见上文
- name_function: None 或 可调用对象
将整数扩展为字符串,参见
dask.bytes.utils.build_name_function
- storage_options: None 或 dict
传递给后端文件系统的额外键/值选项
- codec: ‘null’, ‘deflate’, 或 ‘snappy’
压缩算法
- sync_interval: int
文件中每个块包含的记录数
- 元数据: None 或 dict
包含在文件头中
- compute: bool
如果为 True,文件会立即写入,并阻塞函数块。如果为 False,则返回延迟对象,用户可以在方便时计算这些对象。
- **kwargs: 如果 compute=True,则传递给 compute() 方法
示例
>>> import dask.bag as db >>> b = db.from_sequence([{'name': 'Alice', 'value': 100}, ... {'name': 'Bob', 'value': 200}]) >>> schema = {'name': 'People', 'doc': "Set of people's scores", ... 'type': 'record', ... 'fields': [ ... {'name': 'name', 'type': 'string'}, ... {'name': 'value', 'type': 'int'}]} >>> b.to_avro('my-data.*.avro', schema) ['my-data.0.avro', 'my-data.1.avro']