我有一个启动代码,可将配置单元表中的数据追加到按日期分区的镶木地板文件中。从spark shell执行该代码后,代码运行绝对正确,并且镶木地板文件显示的蜂巢表中相应日期的行数完全相同。
但是,当通过将代码放在jar文件中执行同一代码(由spark Submit命令调用)来执行相同的代码,并且将spark Submit命令排定为每天在上午9点通过Nifi执行时,行数在拼花分区文件中出来的要少一些。我们在P_NO_SLA队列中,以下是一些事实和观察结果:
•源配置单元表上的数据大约在凌晨4点更新 •最初,我们的Nifi作业原定于凌晨4:45开始运行,但记录数不匹配。在上午6点后从spark shell进行手动更新时,数据完全匹配。 •因此,我们计划作业在上午7点运行。这样,当记录数与工作日(周末在150000到> 200000之间)相比太少(周末大约为20000)时,可以通过Nifi作业正确更新数据。再次进行手动运行以回填丢失的数据。 •同样,我们将工作推迟到上午9点。执行此操作后,有两天的记录数匹配(介于160000到200000之间),但是,自7月31日以来,该数据完全不匹配,而与任一天的记录数无关,并且我们每天都必须进行手动回填。
我们无法找出任何可能导致代码随时从spark shell正确运行的特定原因,但是当Nifi仅被安排为执行spark Submit命令运行jar文件时,Nifi给出了不正确的结果包含相同的火花代码。
请帮助我理解为什么会发生这种情况以及如何解决此问题。
P.S .:我已经检查了Nifi日志文件,但找不到任何给出错误的预定作业。