让决策更智能
新一代智能数据分析平台

常见问题排查:ETL常见问题

观小析发表于:2022年03月03日 19:13:15更新于:2022年04月28日 14:12:10

1、ETL和数据集是否有备份机制

没有单独的备份机制,BI整体数据有备份机制的,每天凌晨2点30会自动备份数据。BI做数据备份的话,会包含ETL、数据集的内容。 

2、SQL算子 能不能使用 自定义时间宏?

ETL里面是不支持使用全局参数的,sql里可以用函数,ETL里用语法是spark的语法,可以用now()或者current_date()来设置动态日期。全局参数的设计就是为了页面端参数联动的时候可以即席分析,但ETL不支持即席,所以后续ETL也不会考虑增加这个功能。 

3、报错Org.apache.spark.SparkException: Job aborted

其他任务都运行正常,只有一个任务从来就没有成功过,每次都报这个错;

确定一下节点设置合理否;

4、ETL的源表结构更新,输出表结构如何更新?

参考文档:http://help.guandata.com/hc/kb/article/1472104/  

❇️需要注意:ETL里有选择列一类的节点的话都要检查一遍;

5、ETL中,客户咨询直接使用sum来求和报错原因?

仅仅写个sum的话对于ETL来说其实是它不知道该怎么聚合,可以想象成卡片,拖入维度字段,再拖入相应的这个数值字段,他会根据维度字段来自动聚合,所以您后面加了partitionBy就正常了,您看ETL的时候,其实单个ETL就是一个算子,一个数据处理的步骤,你不要把他想象成Excel中或者表格中那种数据行或者列,他其实在ETL中的时候只是“数据”,谁也不知道它几行的,它可能是10行,可能是200行,也可能是1行,所以就无法像您想的直接用sum就实现他们的聚合,所以说需要一个类似于维度的东西来形成这种数据结构完成聚合;

6、报错信息:org.apache.spark.SparkException: Could not execute broadcast in 300 secs. You can increase the timeout for broadcasts via spark.sql.broadcastTimeout or disable broadcast join by setting spark.sql.autoBroadcastJoinThreshold to –1

常见场景:两个不同的ETL(之前近一个月都是稳定运行)报同样的错误,重新点击运行后也能正常运行;

原因:进入环境,排查相应ETL,客户join后的数据帧较大,需要耗费较长时间,而程序默认spark.sql.broadcastTimeout配置属性默认值为5 * 60秒,即300sec,这个远远不够,随着客户ETL复杂度越来越高,这个报错会很频繁,所以建议设置一下spark.sql.broadcastTimeout参数,将它调大:如config("spark.sql.broadcastTimeout", "3600"); 

7、etl处理结果的数据集能写回我们的数据库吗?

数据分析平台内是目前是做不到的,因为数据集是面向BI分析的,要获得这些数据,只能通过API对接的方式。数据开发平台是可以的,因为它是面向数据开发的,ETL处理完了可直接写回到指定数据库。

8、etl中直接使用聚合函数会报错?

在etl中不能直接使用聚合函数,如SUM(A)+SUM(B),必须使用窗口函数如SUM(A)over()。

或者直接在卡片中进行使用。

9、ETL输出数据集所有者可以前往ETL详情吗?

不能,普通用户非ETL所有者无法查看ETL详情,只有ETL所有者或者有管理员权限的用户才能查看ETL详情。

10、ETL分组聚合节点提示丢失字段,但实际上并没有丢失该字段

大概率是这个字段ID发生了改变,比如输入数据集字段做了变动(可能是把这个字段删除又重新建了一个,导致字段id变化),但是ETL里保留的是原先的字段id,所以两个id对不上就会报丢失字段的错误,此时重新拖下字段就可以了。

11、ETL输出数据集的模型结构为何为空?

这是因为对应ETL的输入数据集这个节点被删除了。

12、ETL里值替换报错的可能原因是什么?

可能是字段类型的问题,比如数值字段如果替换为文本字段,那么就会报错,这种情况下可以在替换之前加一个新建字段的节点,转换下字段格式。

13、ETL支持使用动态时间宏参数吗?

不支持,会报错;

14、数据集对应的ETL不见了,ETL的输出数据流没有模型结构了?

很可能是客户早期有一个etl,输出名字叫xxxx 把这个输出的节点删除掉了,改名为其他的节点,所以导致该ETL输出数据流是没有模型结构的;

15、重启ETL的jobserver,服务器上重启BI任务状态?

服务管理中,重启ETL的jobserver可以kill掉所有正在运行的任务。

服务器上重启BI可以kill掉所有运行中的任务和排队的任务。

16、如何在ETL中计算我们自己的自定义周 ?

ETL中无法使用自定义时间宏,只能使用函数来解决,可以先对日期做+、-偏移日期,然后再用偏移后的日期去计算周。

详细的操作参考一下:http://help.guandata.com/hc/kb/article/1416581/

17、ETL支持的输入数据集有?

包括文件数据、数据库数据集(不含直连数据库、视图数据集、实时数据集)以及其他Smart ETL中的输出数据集。

(后续ETL的其他常见问题也会继续补充)


    您需要登录后才可以回复