Stream Load 常见问题
1. Stream Load 是否支持识别文本文件中首行的列名?或者是否支持指定不读取首行?
Stream Load 不支持识别文本中首行的列名,首行对 Stream Load 来说也只是普通数据。Stream Load 当前也不支持指定不读取首行。如果需要导入的文本文件的首行为列名,可以使用如下四种方式处理:
-
在导出工具中修改设置,重新导出不带列名的文本文件。
-
使用
sed -i '1d' filename
等命令删除文本文件的首行。 -
在 Stream Load 执行命令或语句中,使用
-H "where: <column_name> != '<column_name>'"
把首行过滤掉。其中,<column_name>
是文本文件首行里的任意一个列名。需要注意的是,当前 StarRocks 会先转换、然后再做过滤,因此如果首行中的列值转其他数据类型失败的话,会返回NULL
。所以,这种导入方式要求 StarRocks 表中的列不能有设置为NOT NULL
的。 -
在Stream Load 执行命令或语句中加入
-H "max_filter_ratio:0.01"
,这样可以给导入作业设置一个 1% 或者更小、但能容错超过 1 行的容错率,从而将首行的错误忽视掉。设置容错率后,返回结果的ErrorURL
依旧会提示有错误,但导入作业整体会成功。容错率不宜设置过大,避免漏掉其他数据问题。