写入组合分区的库表时,MultithreadedTableWriter的partitionCol参数怎么传值?

建库建表脚本如下:

db1 = database('',VALUE,2016.11.15..2016.11.18)
db2 = database('',HASH,[SYMBOL,10])
db = database('dfs://iot',COMPO,[db1,db2])

schema=table(1:0,`time`device_id`battery_level`battery_status`battery_temperature`bssid`cpu_avg_1min`cpu_avg_5min`cpu_avg_15min`mem_free`mem_used`rssi`ssid,
 [DATETIME,SYMBOL,INT,SYMBOL,DOUBLE,SYMBOL,DOUBLE,DOUBLE,DOUBLE,LONG,LONG,SHORT,SYMBOL])
 db.createPartitionedTable(schema,`readings,`time`device_id)

问一下 用c++api时,MultithreadedTableWriter的构造函数怎么调用,特别是partitionCol参数怎么填?

		vector<COMPRESS_METHOD> compress;
		compress.push_back(COMPRESS_DELTA);
		compress.push_back(COMPRESS_LZ4);
		compress.push_back(COMPRESS_LZ4);
	
		MultithreadedTableWriter writer("127.0.0.1", 8848, "admin", "123456", "dfs://iot", "readings",
			false, false, NULL, 10000, 1, 5, "`time`device_id", &compress);
请先 登录 后评论

1 个回答

wale

DolphinDB server不支持多个线程并发写入同一个分区,否则会写入失败。因此对于分区表多线程并发写入,为了避免冲突,MultithreadedTableWriter需要保证一个分区只能一个线程同时写入,需要合理设置其构造函数的threadCount 和partitionCol 这2个参数。对于按时间+产品标识组合分区的分区表,threadCount一般设为其产品标识分区数,比如上述dfs://iot数据库就设为10,partitionCol 设为产品标识分区字段名;


                vector<COMPRESS_METHOD> compress;
		compress.push_back(COMPRESS_DELTA);
		compress.push_back(COMPRESS_LZ4);
		compress.push_back(COMPRESS_DELTA);
		compress.push_back(COMPRESS_LZ4);
		compress.push_back(COMPRESS_LZ4);
		compress.push_back(COMPRESS_LZ4);
		compress.push_back(COMPRESS_LZ4);
		compress.push_back(COMPRESS_LZ4);
		compress.push_back(COMPRESS_LZ4);
		compress.push_back(COMPRESS_DELTA);
		compress.push_back(COMPRESS_DELTA);
		compress.push_back(COMPRESS_LZ4);
		compress.push_back(COMPRESS_LZ4);
		MultithreadedTableWriter writer("127.0.0.1", 8848, "admin", "123456", "dfs://iot", "readings",false, false, NULL, 10000, 1, 10, "device_id", &compress);



请先 登录 后评论