python api接口用PartitionedTableAppender函数实现分布式表的并发写入,表是组合分区的话partitionColName分区字段这个参数怎么传?

python api接口,我的分区是组合分区,先datime按日期值分区,后按symbol值分区,现在写入1天的150个symbol,这个线程池写入如何写组合分区字段?

attachments-2021-12-tiXPfoIn61ac9b6d3b6dd.png

红圈位置貌似只能写一个分区字段


请先 登录 后评论

1 个回答

Yating Xie

这里只传一个分区字段就好,组合分区也是一样的。你这个例子,建议传"symbol" ,就能实现并发写入了。当然,传"datetime"也可以运行,但是会发现并不能并发,因为你只写入一天的数据,即datetime只有一个分区,是没法并发的。


下面是PartitionedTableAppender的基本原理:

首先,DolphinDB不允许多个writer同时将数据写入到同一个分区,因此在客户端多线程并行写入数据时,需要确保每个线程分别写入不同的分区。python API提供了自动按分区分流数据并行写入的简便方法:

使用最新的1.30版本及以上的server,可以使用Python API中的 PartitionedTableAppender对象来写入分布式表。其基本原理是设计一个连接池,然后获取分布式表的分区信息,将分区分配给连接池来并行写入,一个分区在同一时间只能由一个连接写入。 

所以,即使是组合分区,你也只需要传入一个有区分度的分区字段,它能满足将数据分为多个分区,以达到分配给多个连接池写入就实现并发写了。



请先 登录 后评论