在 Palantir Foundry 的代码工作簿中如何分配执行者?

How are executors assigned in Code Workbooks in Palantir Foundry?

我有两本代码工作簿。如果我 运行 在工作簿 A 中的 pyspark 中进行计算量大的转换并尝试 运行 工作簿 B 中的某些内容,则两者都会永久排队,直到工作簿 A 中的构建停止,然后工作簿 B 中的构建停止 运行s 立即,就好像它正在等待工作簿 A 中的构建。

执行者是否在一个用户的所有代码工作簿上共享?这是怎么回事?

对于 PalantirCloud 中的 Foundry 运行ning,执行器由 spark 配置设置设置并由 Rubix 管理。这是为了保证执行时间的方差低于 YARN 中的固定资源(以及容器化等额外的 Rubix 安全功能)

由于 Foundry 中的权限是在项目级别设置的,如果用户 运行宁(在交互模式下)同一项目中的多个代码工作簿使用相同的配置文件(同一组库和spark 配置),SparkSession 将在两者之间共享以节省计算资源。

您可以通过 运行ning

查看 spark session
print(spark)
<pyspark.sql.session.SparkSession object at 0x7ffb605ef048>.

如果我在同一个项目中有另一个工作簿,我会得到相同的结果:

print(spark)
<pyspark.sql.session.SparkSession object at 0x7ffb605ef048>.

如果我在不同项目中有另一个工作簿使用相同的配置文件,我会得到不同的 spark 会话:

print(spark)
<pyspark.sql.session.SparkSession object at 0x7f45800df7f0>

如果在不同的 SparkSession 中 运行 很重要(并且不共享执行程序),那么用户可以对其中一个工作簿中的包进行轻微修改,或者创建另一个 pre-warmed spark 会话配置文件(而不是默认配置文件)。