Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Doc] fix links in 2.2 (backport #35221) #35223

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/en/loading/Loading_intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@ StarRocks supports a variety of import methods. Users can choose the most suitab

> Note: It is recommended to read this whole section first, and then dive into the details of your selected import method.

<<<<<<< HEAD
![Data Import Overview](../assets/4.1.1.png)
Choose the import methods based on your data source.
=======
StarRocks supports two communication protocols that can be used to submit load jobs: MySQL and HTTP. For more information about the protocol supported by each loading method, see the [Loading methods](#loading-methods) section of this topic.
>>>>>>> a83aa885d ([Doc] fix links in 2.2 (#35221))

* Offline data import. If the data source is Hive/HDFS, [Broker Load](./BrokerLoad.md) is recommended. If there are many data tables, consider using [Hive external table](../using_starrocks/External_table.md) for direct query.The performance may be worse than `Broker Load`, but it doesn’t require data relocation. If a table has a large data volume, or needs the global data dictionary for precise deduplication, choose [Spark Load](./SparkLoad.md).
* Real-time data import. It is recommended to import log and binlog data to StarRocks via [Routine load](./RoutineLoad.md) after they are synchronized to Kafka. StarRocks has a standard [Flink-connector](./Flink-connector-starrocks.md) to facilitate the use of Flink jobs.
Expand Down
4 changes: 4 additions & 0 deletions docs/zh/faq/Sql_faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,11 @@ MERGE:

## be/fe日志文件太多,怎么处理?

<<<<<<< HEAD
调整日志级别和参数大小,详情参考文档中log相关的参数默认值和作用说明:[参数配置](/administration/Configuration.md)
=======
调整日志级别和参数大小,详情参考 log 相关的参数默认值和作用说明:[参数配置](../administration/Configuration.md)。
>>>>>>> a83aa885d ([Doc] fix links in 2.2 (#35221))

## 更改副本数失败:table lineorder is colocate table, cannot change replicationNum

Expand Down
26 changes: 26 additions & 0 deletions docs/zh/faq/loading/Broker_load_faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,46 @@

## Broker Load,能不能再次执行已经执行成功(State: FINISHED)的任务?

<<<<<<< HEAD
已经执行成功的任务,本身不能再次执行。需要再创建一个,因为为了保证导入任务的不丢不重,每个导入成功的label不可复用。可以show load查看历史的导入记录,然后复制下来修改label后重新导入。
=======
Broker Load 不支持再次执行已经执行成功、处于 FINISHED 状态的导入作业。而且,为了保证数据不丢不重,每个执行成功的导入作业的标签 (Label) 均不可复用。可以使用 [SHOW LOAD](../../sql-reference/sql-statements/data-manipulation/SHOW_LOAD.md) 语句查看历史的导入记录,找到想要再次执行的导入作业,复制作业信息,并修改作业标签后,重新创建一个导入作业并执行。
>>>>>>> a83aa885d ([Doc] fix links in 2.2 (#35221))

## Broker Load 导入时内容乱码

**问题描述:**

<<<<<<< HEAD
导入报错,查看相应错误url显示内容乱码。
=======
## 3. 通过 Broker Load 导入 ORC 格式的数据时,发生 `ErrorMsg: type:ETL_RUN_FAIL; msg:Cannot cast '<slot 6>' from VARCHAR to ARRAY<VARCHAR(30)>` 错误应该如何处理?

待导入数据文件和 Starrocks 表两侧的列名不一致,执行 `SET` 子句的时候系统内部会有一个类型推断,但是在调用 cast 函数执行数据类型转换的时候失败了。解决办法是确保两侧的列名一致,这样就不需要 `SET` 子句,也就不会调用 cast 函数执行数据类型转换,导入就可以成功了。

## 4. 为什么 Broker Load 导入作业没报错,但是却查询不到数据?

Broker Load 是一种异步的导入方式,创建导入作业的语句没报错,不代表导入作业成功了。可以通过 [SHOW LOAD](../../sql-reference/sql-statements/data-manipulation/SHOW_LOAD.md) 语句来查看导入作业的结果状态和 `errmsg` 信息,然后修改导入作业的参数配置后,再重试导入作业。

## 5. 导入报 "failed to send batch"或"TabletWriter add batch with unknown id" 错误应该如何处理?

该错误由数据写入超时而引起。需要修改[系统变量](../../reference/System_variable.md) `query_timeout` 和 [BE 配置项](../../administration/Configuration.md#配置-be-静态参数) `streaming_load_rpc_max_alive_time_sec` 的配置。

## 6. 导入报 "LOAD-RUN-FAIL; msg:OrcScannerAdapter::init_include_columns. col name = xxx not found" 错误应该如何处理?

如果导入的是 Parquet 或 ORC 格式的数据,检查文件头的列名是否与 StarRocks 表中的列名一致,例如:
>>>>>>> a83aa885d ([Doc] fix links in 2.2 (#35221))

```SQL
Reason: column count mismatch, expect=6 real=1. src line: [$交通];
zcI~跟团+v]; count mismatch, expect=6 real=2. src line: [租e�rD��食休闲娱乐
```

<<<<<<< HEAD
**解决方案:**
=======
上述示例,表示将 Parquet 或 ORC 文件中以 `tmp_c1` 和 `tmp_c2` 为列名的列,分别映射到 StarRocks 表中的 `name` 和 `id` 列。如果没有使用 `SET` 子句,则以 `column_list` 参数中指定的列作为映射。具体请参见 [BROKER LOAD](../../sql-reference/sql-statements/data-manipulation/BROKER_LOAD.md)。
>>>>>>> a83aa885d ([Doc] fix links in 2.2 (#35221))

format as指定错误,改成文件对应类型重试导入任务。

Expand Down
74 changes: 74 additions & 0 deletions docs/zh/faq/loading/Loading_faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,82 @@

调整compaction策略,加快合并(调整完需要观察内存和io),在be.conf中修改以下内容

<<<<<<< HEAD
```plain text
cumulative_compaction_num_threads_per_disk = 4
base_compaction_num_threads_per_disk = 2
cumulative_compaction_check_interval_seconds = 2
```
=======
StarRocks 集群中同一个数据库内已经有一个具有相同标签的导入作业执行成功或正在执行。原因如下:

由于 Stream Load 是采用 HTTP 协议提交导入作业的请求,一般各个语言的 HTTP 客户端均会自带请求重试逻辑。StarRocks 集群在接受到第一个请求后,已经开始操作 Stream Load,但是由于没有及时向客户端返回结果,客户端会发生再次重试发送相同请求的情况。这时候 StarRocks 集群由于已经在操作第一个请求,所以第二个请求会返回 `Label Already Exists` 的状态提示。

需要检查不同导入方式之间是否有标签冲突、或是有重复提交的导入作业。排查方法如下:

- 使用标签搜索主 FE 的日志,看是否存在同一个标签出现了两次的情况。如果有,就说明客户端重复提交了该请求。

> **说明**
>
> StarRocks 集群中导入作业的标签不区分导入方式。因此,可能存在不同的导入作业使用了相同标签的问题。

- 运行 SHOW LOAD WHERE LABEL = "xxx" 语句,查看是否已经存在具有标签相同、且处于 **FINISHED** 状态的导入作业。

> **说明**
>
> 其中 `xxx` 为待检查的标签字符串。

建议根据当前请求导入的数据量,计算出大致的导入耗时,并根据导入超时时间来适当地调大客户端的请求超时时间,从而避免客户端多次提交该请求。

## 3. 发生数据质量错误 "ETL_QUALITY_UNSATISFIED; msg:quality not good enough to cancel" 应该如何处理?

运行 [SHOW LOAD](../../sql-reference/sql-statements/data-manipulation/SHOW_LOAD.md) 语句。在语句返回的信息中,找到 URL,然后查看错误数据。

常见的数据质量错误有:

- "convert csv string to INT failed."

待导入数据文件中某列的字符串在转化为对应类型的数据时出错。比如,将 `abc` 转化为数字时失败。

- "the length of input is too long than schema."

待导入数据文件中某列的长度不正确。比如定长字符串超过建表设置的长度,或 INT 类型的字段超过 4 个字节。

- "actual column number is less than schema column number."

待导入数据文件中某一行按照指定的分隔符切分后,列数小于指定的列数。可能原因是分隔符不正确。

- "actual column number is more than schema column number."

待导入数据文件中某一行按照指定的分隔符切分后,列数大于指定的列数。

- "the frac part length longer than schema scale."

待导入数据文件中某 DECIMAL 类型的列的小数部分超过指定的长度。

- "the int part length longer than schema precision."

待导入数据文件中某 DECIMAL 类型的列的整数部分超过指定的长度。

- "there is no corresponding partition for this key."

待导入数据文件中某行的分区列的值不在分区范围内。

## 4. 导入过程中,发生远端程序呼叫(Remote Procedure Call,简称 RPC)超时问题应该如何处理?

检查 BE 配置文件 **be.conf** 中 `write_buffer_size` 参数的设置。该参数用于控制 BE 上内存块的大小阈值,默认阈值为 100 MB。如果阈值过大,可能会导致远端程序呼叫(Remote Procedure Call,简称 RPC)超时,这时候需要配合 BE 配置文件中的 `tablet_writer_rpc_timeout_sec` 参数来适当地调整 `write_buffer_size` 参数的取值。请参见 [BE 配置](../../loading/Loading_intro.md)。

## 5. 导入作业报错 "Value count does not match column count" 应该怎么处理?

导入作业失败,通过查看错误详情 URL 发现返回 "Value count does not match column count" 错误,提示解析源数据得到的列数与目标表的列数不匹配:

```Java
Error: Value count does not match column count. Expect 3, but got 1. Row: 2023-01-01T18:29:00Z,cpu0,80.99
Error: Value count does not match column count. Expect 3, but got 1. Row: 2023-01-01T18:29:10Z,cpu1,75.23
Error: Value count does not match column count. Expect 3, but got 1. Row: 2023-01-01T18:29:20Z,cpu2,59.44
```

发生该错误的原因是导入命令或导入语句中指定的列分隔符与源数据中的列分隔符不一致。例如上面示例中,源数据为 CSV 格式,包括三列,列分隔符为逗号 (`,`),但是导入命令或导入语句中却指定制表符 (`\t`) 作为列分隔符,最终导致源数据的三列数据解析成了一列数据。

修改导入命令或导入语句中的列分隔符为逗号 (`,`),然后再次尝试执行导入。
>>>>>>> a83aa885d ([Doc] fix links in 2.2 (#35221))
19 changes: 19 additions & 0 deletions docs/zh/faq/loading/Stream_load_faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,4 +19,23 @@ StarRocks支持在导入过程中进行数据转换,具体可以参考企业
-H "columns: NO,DATE_1, VERSION, PRICE, DATE=LEFT(DATE_1,6)"
```

<<<<<<< HEAD
来实现列的转换。DATE_1可以简单的认为是先占位进行取数,然后通过函数转换,赋值给StarRocks中对应的字段。特别注意,我们需要先列出 CSV 数据文件中的所有列,再进行函数转换,常规函数这里都可以使用。
=======
`DATE_1` 可以简单地看成是先占位进行取数,然后通过 left() 函数进行转换,赋值给 StarRocks 表中的 `DATE` 列。特别需要注意的是,必须先列出 CSV 文件中所有列的临时名称,然后再使用函数进行转换。支持列转换的函数为标量函数,包括非聚合函数和窗口函数。

## 3. 数据质量问题报错 "ETL_QUALITY_UNSATISFIED; msg:quality not good enough to cancel" 应该怎么解决?

请参见[导入通用常见问题](./Loading_faq.md)。

## 4. 导入状态为 "Label Already Exists" 应该怎么解决?

请参见[导入通用常见问题](./Loading_faq.md)。

## 5. 导入出错 "body exceed max size: 10737418240, limit: 10737418240" 应该如何解决?

导入文件大小超过 10GB, 超过 Stream Load 所能支持的文件大小上限。有两种解决方法:

1. 把文件通过 `seq -w 0 n` 拆分。
2. 通过 `curl -XPOST http:///be_host:http_port/api/update_config?streaming_load_max_mb=1024000` 来扩大这个上限。
>>>>>>> a83aa885d ([Doc] fix links in 2.2 (#35221))
11 changes: 11 additions & 0 deletions docs/zh/introduction/StarRocks_intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,18 @@ StarRocks通过CBO优化器(Cost Based Optimizer)可以对复杂查询自动优

### 联邦查询

<<<<<<< HEAD
StarRocks支持使用外表的方式进行联邦查询,当前可以支持Hive、MySQL、Elasticsearch三种类型的外表,用户无需通过数据导入,可以直接进行数据查询加速。
=======
* [导入总览](../loading/Loading_intro)
* [通过 HTTP PUT 从本地文件系统或流式数据源导入](../loading/StreamLoad)
* [从 HDFS 或外部云存储系统导入](../loading/BrokerLoad)
* [从 Apache Kafka® 持续导入](../loading/RoutineLoad)
* [使用 Apache Spark™ 导入](../loading/SparkLoad)
* [使用 INSERT 语句导入](../loading/InsertInto)
* [从 MySQL 实时同步](../loading/Flink_cdc_load)
* [从 Apache Flink® 持续导入](../loading/Flink-connector-starrocks)
>>>>>>> a83aa885d ([Doc] fix links in 2.2 (#35221))

### 高效更新

Expand Down
Loading
Loading