跳到主要内容
版本:6.0.0

数据集常见报错

1. 连接Hive数据库创建数据集的时候,代码是可以跑出数的,预览也都正常,但是一更新就显示这个报错:/guandata-store/table_cache/guanbi/hd2dbf5ec63d44583a1a724e doesn't exist

说明数据集创建后还在排队,没有运行完,等任务结束就好了,客户往往会在数据集没有运行完的时候就去点击预览等操作;

2. 创建数据集时,数据库预览报错,"column ambiguously defined"

【原因】

1)未明确定义列。如:select 查询的字段在from的两张表中都存在,导致数据库无法区别需要查询的字段来自于哪张表。

2)查询中有重复字段。如:select a.name,a.name

3. 在Oracle能正常跑的数据库,但在观远里创建数据集时报错:Field SKU is not unique in Record

【原因】:观远数据不支持同名字段。 在Oracle 的Client里,只是做查询跟显示, 但在观远这里是要做存储的,需要不同的名称。

4. 数据集更新报错:java.io.IOException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.ClassCastException

类型转换异常,原来的字段类型和新的字段类型不一致,可以看下数据集预览是不是成功的,预览的数据有没有看起来明显是不符合预期的字段。

5. 数据集更新失败 unknown error

unknown error是更新成功后,写历史任务的时候出错了。 导致认为更新失败了。这是一个偶现的问题,我们会考虑进一步的优化方案~

6. 数据集更新报错:Error getting connection from data source HikariDataSource(HikariPool-10)

这个报错通常是因为数据库连接池满导致的,可能之前的任务连接没有被完全释放导致的这个报错。通常这样的错误只要数据账号和网络环境没有问题,手动更新就可以更新成功;如果手动更新也是失败,需要查看数据账号的测试连接是否正常,如果测试连接正常,那说明BI和客户端数据库的连通性是没问题的,大概率是BI的连接池满了。需要查看报错时间段具体日志信息。

(1)业务要看实时数据,不希望有任何缓存: 可以在数据集上开一下支持实时卡片数据-无缓存
(不过要提醒的是这样每次业务使用报表,都会直接向数据集发出请求,会增加数据库压力)
(2)数据集大量更新失败,更新时间太集中了,可以错开一下设置的更新时间。

7. 在添加日期区间比较大,数据量比较多的数据集时,出现“ Query exceeded distributed user memory limit of 300GB","” 这个除了减少数据量,还有其他方法可以避免?

这种报错一般是sql太复杂了,运行内存不够了。如果数据量减少不了的话,看看能不能优化sql减少运行内存。比如:
(1)不用的字段不要select 出来,这样能减少内存压力;
(2)建议涉及到partion by,  group by,  order, join等的sql,在berserker上生成表方式,或者做宽表,然后在BI里面查,这样会更快,也容易保障。

8. 配置数据抽取,sql预览是正常的,但是配置完成后去概览看就报这个错:`/guandata-store/table_cache/guanbi/*********` is not a Delta table.;

这是因为配置完成后数据还没完全抽上来,任务还在运行,所以会弹出这个报错,待任务运行完成后再查看就可以了。

9. 新建TIDB数据集预览成功,更新报错,报错信息为整段 SQL 语句后加total length 6686

检查日志真正是报错是

You have an error in your SQL syntax; check the manual that corresponds to your TiDB version for the right syntax to use line 126 column 2 near

【原因】注释不能被忽略造成的语法错误。
【解决方案】根据此报错,删除SQL中的注释后数据集能正常更新。

10. 同样的SQL在本地执行正常,BI中预览报错

SQLServer:Incorrect syntax near ";"

Oracle:ORA-00907:missing right parenthesis\n

【原因】预览是先将输入的SQL查询结果存入临时表中,再从临时表中取最终结果的。所以在SQL后面以分号结尾会报语法错误。

【解决方案】去掉结尾的分号即可。

11. 修改了数据集的字段类型后更新报错

【原因】报错信息是非法转换,不建议直接在数据结构中转换数据类型。比如不支持STRING直接改成了TIMESTAMP。

【解决方案】将某种数据类型的表达式转换为另一种数据类型,需要用函数对数据库进行转换,常用CAST函数。

12. Web Service数据集更新时报错【数据量超出允许阈值】

为了保证数据更新的成功率以及BI性能的问题,对web service数据集更新时,系统限制的最大是19M(即单次更新,数据量不能超过19M)

13. 直连数据集更新报错提示Disk I/O error: Failed to open HDFS file

该报错原因是数据库找不到相关文件,可先去源数据库内确认数据库信息是否变化,尝试在源库内执行更新SQL,可联系内部数据库管理员处理

14. 数据集新建概览时,提示报错【数据库异常,请联系数据库管理员,错误详情:Prepared statement needs to be re-prepared】

这是本地数据库自身的报错,数据库缓存大小设置有关,可通过修改以下参数来解决
set global table_open_cache=16384;

set global table_definition_cache=16384;

15. 创建数据账号,测试连接报错null, message from server: "Host 'xxx.xxx.x.xxx' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"

一般情况下该报错是因为同一个ip在短时间内产生太多(超过mysql数据库max_connect_errors的最大值)中断的数据库连接导致的阻塞,联系本地的数据库管理员执行:flush hosts 清理缓存后解决;

16.上传文件报错:empty.max

上传的只是能行列纯数据,不要带有excel的样式(比如合并单元格等)