注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。
以下是一些有关搭建和检查的常见问题。
如果您在调试搭建错误时遇到困难,请考虑以下步骤:
搭建是否曾经成功过?如果是,您是否更改了生成数据集的逻辑?尝试回滚这些更改;如果搭建成功,您可能可以将问题隔离到新逻辑。您还可以在搭建应用的数据集窗格中选择日志以查看搭建历史。
底层数据最近是否更改了?您可能会看到以下几种表现:
Foundry中的错误信息可能很长,有时难以理解。如果您遇到难以执行的错误信息,请尝试以下步骤。
通常,错误跟踪中最有用的部分会以关键短语开头。查找错误信息中的以下短语,以找到对故障排除可能有价值的指导。请注意,重要的信息部分通常会出现在底部:
What went wrong:
Caused by:
Py4JJavaError
UserCodeError
如果您的错误引用了ErrorInstanceID而没有其他上下文,请将问题提升给Palantir支持团队。ErrorInstanceIDs也会显示用户逻辑错误,因此请先检查这是否可能是您问题的原因。
在联系支持时,请始终包括以下内容:
您的搭建卡在“等待资源”状态的时间比平时长,并且没有运行。这可能是由于您运行搭建时平台上的活动增加所致。这时运行的许多搭建可能正在使用平台上的可用资源,导致您的搭建排队等待其他搭建完成并释放资源。这种行为是Spark变换讨论的Spark执行模型的副产品。
要进行故障排除,请执行以下步骤:
尝试在平台活动较少的时间运行您的搭建,看看是否能改善性能。这将有助于避免您的搭建排队在其他任务之后。
如果您在安排任务,避免在整点或午夜这样的常见时间运行任务。
搭建性能随着时间的推移而恶化可能是由以下一个或多个原因引起的:1)变换逻辑的更改,2)输入数据规模的变化,或3)搭建时集群上计算负载的增加。
要进行故障排除,请执行以下步骤:
包含一个具有多个键条目的大左表和一个每个键条目较少的小右表的合并非常适合使用加盐合并,它可以将数据均匀分布到分区中。
要进行故障排除,请执行以下步骤:
EXPLODE
函数。EXPLODE
是一个笛卡尔积:SELECT 'a' AS test, EXPLODE(ARRAY(1,2,3,4,5)) AS dummy2
test | test2
----------------
a | 1
a | 2
a | 3
a | 4
a | 5
此表格展示了两列数据,test
和test2
,其中test
列的值都是a
,而test2
列的值是从1到5的整数。
Copied!1 2 3 4 5 6 7 8
SELECT left.*, right.* FROM `/foo/bar/baz` AS left -- 左表:/foo/bar/baz JOIN `/foo2/bar2/baz2` AS right -- 右表:/foo2/bar2/baz2 ON left.something = right.something -- 基于left表和right表中something字段的相等条件进行连接
something
列进行透视并聚合行数,然后在something
上合并左右表并乘以聚合列。这将输出每个something
键的行数,理想情况下应均匀分布,但当出现倾斜时,表明需要进行加盐合并。Copied!1 2 3 4 5 6 7 8
SELECT left.*, right.* FROM (SELECT *, FLOOR(RAND() * 8) AS salt FROM `/foo/bar/baz`) AS left -- 从 `/foo/bar/baz` 表中选择所有列,并生成一个 0 到 7 的随机整数作为 salt JOIN (SELECT *, EXPLODE(ARRAY(0,1,2,3,4,5,6,7)) AS salt FROM `/foo2/bar2/baz2`) AS right -- 从 `/foo2/bar2/baz2` 表中选择所有列,并将 0 到 7 的数组展开为多行,每行的 salt 从数组中取值 ON left.something = right.something AND left.salt = right.salt -- 根据 something 列和 salt 列进行连接
调优:
explode
因素至少设为 X。注意以下事项:
CEIL(RAND() * N)
给您 1 到 N 之间的整数。FLOOR(RAND() * N)
给您 0 到 N — 1 之间的数字。确保在加盐合并中扩展正确的数字集。加盐的开销
每个存储库都包含一个“shrinkwrap”文件,该文件定义了每个引用路径、该路径引用的数据集的唯一ID以及该数据集的当前路径之间的映射。这在数据集移动到文件夹之间时非常有用。例如,生成该数据集的存储库中的 shrinkwrap 文件将更新;下次运行搭建时,数据集将在正确的位置搭建。您可能会因为几个原因看到 shrinkwrap 错误,比如数据集删除、重命名或重新定位。
要进行故障排除,请查看以下注意事项和相关操作:
要查找给定仓库的 shrinkwrap 文件:
transforms-shrinkwrap.yml
文件应如下所示:可能是存储库的 shrinkwrap 文件中引用的数据集不再存在。通常情况下,shrinkwrap 错误会告诉您哪些数据集不存在以及它们在存储库中的引用位置。
在您对分支进行迭代时,可能有更改已合并到 master
中,这些更改向存储库添加了一个文件并更新了 shrinkwrap 文件。要解决此问题,请执行以下操作:
transforms-shrinkwrap.yml
文件。要运行搭建,触发它的用户必须拥有所需的权限。具体来说,用户必须是输出数据集的 Editor
,因为运行搭建实际上是编辑输出文件。
一种简单的方法来查看您在给定数据集上拥有什么权限是通过在数据沿袭中调出数据集,启用 权限 筛选,并选择 资源权限 来为节点着色。
此错误发生在由于上游数据集搭建失败而导致的搭建计划被取消时,数据集搭建失败。
要进行故障排除,请执行以下步骤:
您尝试搭建的数据集认为它是由另一个存储库控制的。您可以在数据集预览页面的 详细信息 选项卡中,在 Job spec 部分的 sourceProvenance 块中查看哪个存储库控制着数据集。当多个存储库创建相同的输出数据集时,会发生这种情况。
要进行故障排除,请执行以下步骤:
检查可能由于多种原因超时失败,但您可以采取一些常见步骤,这些步骤通常可以解除阻塞:
ci.yml
中添加行 —refresh-dependencies
。