其他问题
本文汇总了使用 StarRocks 时的其他常见问题。
VARCHAR(32) 和 STRING 占用的存储空间相同吗?
VARCHAR(32) 和 STRING 都是变长数据类型。当储存相同长度的数据时,VARCHAR(32) 和 STRING 占用的储存空间相同。
查询时,VARCHAR(32) 和 STRING 的性能相同吗?
相同。
Oracle 导出的 TXT 文件,在将其字符集修改成 UTF-8 后仍然乱码,如何处理?
将文件字符集视为 GBK 进行字符集转换,步骤如下:
-
例如,一个名为 origin 的文件乱码,用以下命令查看到其字符集为 ISO-8859-1。
file --mime-encoding origin.txt
origin.txt:iso-8859-1 -
使用
iconv
命令将文件的字符集转换为 UTF-8。iconv -f iso-8859-1 -t utf-8 origin.txt > origin_utf-8.txt
-
若转换后得到的文件还存在乱码,那么将文件的字符集视为 GBK,再转换成 UTF-8。
iconv -f gbk -t utf-8 origin.txt > origin_utf-8.txt
MySQL 中定义的字符串长度跟 StarRocks 定义的是一致的吗?
在 StarRocks 中,VARCHAR(n) 中的n代表字节数,而在 MySQL 中,VARCHAR(n) 中的 n 代表字符数。根据 UTF-8,1 个汉字等于 3 个字节。当 StarRocks 和 MySQL 将 n 定义成相同数字时,MySQL 保存的字符数是 StarRocks 的 3 倍。
表的分区字段可以是 FLOAT、DOUBLE、或 DECIMAL 数据类型吗?
不可以,仅支持 DATE, DATETIME 和 INT 数据类型。
如何查看表中的数据占了多大的存储?
执行 SHOW DATA 语句查看数据所占存储空间以及数据量、副本数量和行数。
说明:数据导入非实时更新,在导入后 1 分钟左右可以查看到最新的数据。
如何调整 StarRocks 数据库配额 (quota)?
运行如下代码调整数据库配额:
ALTER DATABASE example_db SET DATA QUOTA 10T;
StarRocks 支持通过 UPSERT 语法实现部分字段更新吗?
StarRocks 2.2 及以上版本可以通过主键表实现部分字段更新。StarRocks 1.9 及以上版本可以通过主键表实现全部字段更新。更多信息,参见 StarRocks 2.2 版本的主键表。
如何使用原子替换表和原子替换分区功能?
执行 SWAP WITH 语句实现原子替换表和原子替换分区功能。SWAP WITH 语句要比 INSERT OVERWRITE 语句更安全。原子替换前可以先检查数据,以便核对替换后的数据和替换前的数据是否相同。
-
原子替换表:例如,有一张表名为
table1
。如果要用另一张表原子替换table1
,操作如下:-
创建一张新表名为
table2
。create table2 like table1;
-
使用 Stream Load、Broker Load、或 Insert Into 等方式将
table1
的数据导入到新表table2
中。 -
原子替换
table1
与table2
。ALTER TABLE table1 SWAP WITH table2;
这样做,数据就会精准的导入到
table1
中。 -
-
原子替换分区:例如,有一个表名为
table1
。如果想要原子替换table1
中的分区数据,操作如下:-
创建临时分区。
ALTER TABLE table1
ADD TEMPORARY PARTITION tp1
VALUES LESS THAN("2020-02-01"); -
将
table1
中的分区数据导入到临时分区。 -
原子替换分区。
ALTER TABLE table1
REPLACE PARTITION (p1) WITH TEMPORARY PARTITION (tp1);
-
重启FE时报错 "error to open replicated environment, will exit"
该错误是 BDBJE 的漏洞导致的,将 BDBJE 升级到 1.17 或更高版本可修复此问题。
查询新创建的 Apache Hive™ 表时报错 "Broker list path exception"
问题描述
msg:Broker list path exception
path=hdfs://172.31.3.136:9000/user/hive/warehouse/zltest.db/student_info/*, broker=TNetworkAddress(hostname:172.31.4.233, port:8000)
解决方案
和 StarRocks 的技术支持确认 namenode 的地址和端口是否正确以及您是否有权限访问 namenode 的地址和端口。
查询新创建的 Apache Hive™ 表时报错 "get hive partition meta data failed"
问题描述
msg:get hive partition meta data failed: java.net.UnknownHostException: emr-header-1.cluster-242
解决方案
确认有网络连接并给每个 BE 机器传一份集群里的 host 文件。
访问 Apache Hive™ 的 ORC 外表报错 "do_open failed. reason = Invalid ORC postscript length"
问题描述
Apache Hive™ 的元数据会缓存在 StarRocks 的 FE 中,但是 StarRocks 更新元数据有两个小时的时间差。在 StarRocks 完成更新之前,如果在 Apache Hive™ 表中插入新数据或更新数据,那么 BE 扫描的 HDFS 中的数据和 FE 获得的数据不一致就会发生这个错误。
MySQL [bdp_dim]> select * from dim_page_func_s limit 1;
ERROR 1064 (HY000): HdfsOrcScanner::do_open failed. reason = Invalid ORC postscript length
解决方案
解决方案有以下两种:
- 将 StarRocks 升级到 2.2 或更高版本。
- 手动刷新 Apache Hive™ 表。更多信息,参见缓存更新。
连接 MySQL 外表报错 "caching_sha2_password cannot be loaded"
问题描述
MySQL 5.7 版本默认的认证方式为 mysql_native_password,如使用 MySQL 8.0 版本默认的认证方式 caching_sha2_password 来进行认证会导致连接报错。