加载指定having lines separator 时
max_data_processor 不起作用
问题现象
当使用文本加载方式时,
行分隔符默认为'\n'。
如果某列数据可能包含了行分隔符,
则需要在SQL 中输入'having lines separator'子句,同时需要输入'enclosed by'指定
字段包围符。加载sql 如下:
load data infile 'sftp://gbase:gbase@192.168.105.100//home/gbase/test.txt' into t
able test data_format 3 having lines separator fields terminated by '|' enclose
d by '"';
当在load sql 中指定max_data_processors ,或者在数据库中修改参数
gcluster_loader_max_data_processors
加载时,通过查看系统表
information_schema.load_satus 发现只有一个node 节点参与数据分发处理,
指定的
参数不起作用,加载性能较慢。
原因分析
这个现象在当前产品中是正常的约束,因为列数据中不包含有行分隔符时,可以
GBase 8a MPP Cluster 最佳实践
5 FAQ
文档版本(2022-02-11)
南大通用数据技术股份有限公司
129
将数据文件按照行进行分块切分,发送给多个node 去进行数据处理分发。
而列数据中包含有行分隔符时,无法直接将数据文件按照行分隔符分块切分,需
要考虑每个行分隔符前后的包围符是否成对匹配,这个过程是无法并行操作的。
解决方法
建议从数据来源上杜绝这种列数据中包含有行分隔符的情况,比如可以自行指定
多字节行分隔符。