分析代码工作簿Environment会话历史记录和会话固定

注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

会话历史记录和会话固定

会话

当您在Spark模块中初始化一个Code Workbook环境时,会将一系列元数据归属于该模块。这些元数据可以分为两类:计算信息和环境信息。会话是这些设置在Spark模块生命周期中实例化的一部分,或者非正式地说,“在其生命周期内给定Spark模块的真实状态”。

计算信息包括分配给Spark模块的Spark设置的详细信息,以及其他相关信息,如jar依赖项、资源标识符和模块的启动类型。另一方面,环境信息可以进一步分为两类:请求的环境和已解决的环境。请求的环境是一组Conda规范,例如请求pandas=2.*python<3.10,而已解决的环境是一组满足请求的环境所建立约束的已解决包。需要注意的是,请求的环境是非确定性的,而已解决的环境,按定义,是给定请求环境的永久解决方案。因此,两个相同的请求环境可能导致不同的已解决环境。例如,在2017年请求python>=3.6可能会解析为Python 3.6,而今天相同的请求可能会导致解析为Python 3.10。

会话历史记录

Code Workbook提供有关一个Workbook的所有最近会话的信息。要查看Workbook的会话历史记录,请选择Code Workbook的环境下拉菜单,然后选择查看会话历史记录

查看会话历史记录下拉按钮

会话历史记录窗口通过三个不同的选项卡提供信息:计算信息请求的环境已解决的环境。左侧窗格提供会话的ID以及会话初始化的时间戳。会话ID左侧的图标将指示它是否成功初始化(绿色)、失败(红色)或其他(蓝色)。蓝色会话通常意味着会话尚未完成初始化,因此未达到失败或成功状态。

会话历史记录窗口

计算信息

计算信息选项卡提供有关给定会话请求的Spark模块类型的信息:

  • moduleAssignmentInfo: 一般信息,说明环境是由特定用户为交互式Workbook使用而启动,还是由后台任务(如定期搭建)启动。有关交互式和搭建模块之间区别的更多信息,请参阅批量搭建和交互式搭建
  • moduleLaunchInfo: 关于分配给Spark模块自身属性的元数据。这包括以下字段:
    • sparkModuleRid: Spark模块的唯一标识符。由于模块和会话之间存在1:1的映射,您会注意到sparkModuleRidsessionId将共享相同的唯一标识符。
    • profileRid: 初始化Spark模块的配置文件的唯一标识符。
    • isCustomEnv: 该会话是否使用自定义环境初始化。请记住,在Code Workbook中,自定义环境被定义为在Code Workbook界面的环境配置菜单中直接更改的任何标准配置文件。
    • jarDependencies: 所有手动添加到控制面板中的配置文件中的jar依赖项的列表。
    • moduleLaunchType: 可以是WARM_MODULEON_DEMAND_MODULE。表示会话是使用已初始化的模块队列中的模块,还是请求一个新的模块来开始其初始化过程。
    • moduleResources: 与模块相关的所有计算信息,包括驱动程序和执行器内存、执行器数量等。

请求的环境

请求的环境选项卡提供有关初始化开始前所需环境设置的信息:

  • 初始化模式: 为该会话执行的Code Workbook初始化类型。可以是solvefiledocker。有关Code Workbook中初始化类型的更多信息,请参阅环境优化文档。
  • 环境仓库: 存储相关环境的键。对于非自定义环境,这将是会话使用的profileRid。对于自定义环境,这将是配置文件被自定义的workbook的workbookRid
  • 请求的包: 提交用于初始化过程的请求包列表。此列表将包括配置文件专门请求的包,以及Code Workbook自动请求的任何附加包,以便其正常运行。
  • 支持的仓库: 安装包来源的渠道列表。

已解决的环境

已解决的环境选项卡提供有关初始化过程中使用的环境包的信息。这包括初始化环境所花费的时间,以及最终安装到模块上的包及其版本。这些信息特别重要,因为Code Workbook的会话回滚功能借用的是先前会话的已解决环境,而不是请求的环境。

比较会话

比较两个给定会话以了解给定环境可能如何更改通常是有帮助的。会话历史记录窗口允许您比较当前会话与任何历史会话。您可以通过选择会话历史记录窗口右上角的比较会话访问会话历史记录比较选项卡。

会话比较菜单将在彼此旁边提供两个窗口。右侧显示当前会话的信息。在左侧,可以显示来自会话列表的任何会话以进行比较。要切换左侧要比较的会话,请从会话列表中选择任何会话。您可以随时通过选择窗口右上角的退出比较退出比较视图。左侧选择的会话将保持选中状态。

会话可以在所有三个可用选项卡中进行比较。比较两个会话的计算信息可能有助于了解模块内存的更改。比较请求的环境有助于理解两个给定会话的环境之间手动更改了什么,而比较已解决的环境可能有助于了解两个会话之间安装的不同版本。

在下面的示例中,使用会话比较的各种选项卡揭示了关于两个会话的以下信息:

会话历史记录计算选项卡

  • 使用了不同的配置文件。
  • 配置文件被自定义。
  • 在模块上使用了较小的内存设置。

会话历史记录请求的环境选项卡

  • 请求了更近期的Python和pandas包版本,以及其他。

会话历史记录已解决的环境选项卡

  • 不同版本的Python最终安装在环境中。

会话固定

在某些情况下,您可能希望临时回滚到历史会话的完全相同设置。Code Workbook通过提供固定会话的机会来实现此行为。固定会话意味着使用历史会话的相同元数据初始化一个全新的会话和Spark模块,以重现一个似乎相同的环境。固定会话将从历史会话中借用已解决信息来初始化一个新的模块。这一点尤其重要,因为使用相同的已解决环境可以保证安装的包相同,而使用相同的请求环境则不能。因此,固定会话模拟了回滚到以前工作的环境的效果。少数几个元数据,如初始化模式,不会从历史会话中借用。

如何固定会话

要固定会话,请导航到会话历史记录窗口并选择要固定的会话。然后选择面板右下角的固定会话。Workbook的当前分支将有一个固定会话覆盖,最多可持续24小时。横幅将显示覆盖的剩余时间,以及删除固定的选项。在此期间,每个后续的交互式环境初始化将借用固定会话的信息。当期间到期或会话被手动取消固定时,Workbook将恢复使用其当前配置的环境。

会话固定旨在用于调试目的,不应依赖于长期的、生产就绪的管道。因此,固定会话只会影响_交互式_环境。在Code Workbook界面外执行的搭建,如定期搭建,不会受到固定会话覆盖的影响。我们建议您将会话固定限制在偶尔的故障排除和实验中。相反,使用会话历史记录功能来了解不同会话之间的差异,并直接编辑环境定义。

会话固定的限制

固定会话时适用某些限制。固定的会话不会无限持续,并非每个会话都可以固定,也并非每次初始化都会受到固定会话的影响。下面列出了一些在考虑固定会话时需要注意的限制:

  • 会话固定可以持续最多24小时。要进一步延长此时间,您需要重新固定会话。重新固定会话将导致启动一个新模块,并且模块上的所有本地状态将丢失。
  • 固定会话不会借用其附加历史会话的所有元数据。设置如初始化模式可能有所不同。
  • 只有以前成功的会话可以固定。未完成或不成功的会话被禁止。此外,Code Workbook可能会出于防御性原因阻止您选择一个版本进行固定,原因可能是版本不兼容、黑名单包版本、API中断等。红色横幅将通知您无法固定的会话。
  • 固定会话仅影响交互式任务 - 不影响搭建任务。
  • 只有使用Artifacts Profiles的会话可以固定。

出于上述原因,会话固定是一个调试功能,不应依赖于长期的、生产就绪的管道。

使用会话历史记录进行环境故障排除

上面提到的会话历史记录会话比较会话固定功能可以在故障排除失败的环境中发挥重要作用。特别是,它们有助于解决以前工作环境的故障。按照以下步骤解决此类问题:

  1. 该环境以前是否工作过?

  2. 使用比较会话功能,选择当前失败的会话与以前成功的会话进行比较,并观察环境中的差异。

    • 如果计算信息详细信息发生了变化,模块设置可能不包含足够的内存以正确初始化模块。
    • 如果请求的环境详细信息发生了变化,则环境中引入了手动破坏性更改,导致失败。
    • 如果请求的环境详细信息没有变化,但已解决环境中发生了导致失败的变化,则使用的包的新版本可能包含破坏性更改。这些包通常来自开源。您可以直接在故障包中调查问题或修改您的环境以避免请求相关包或版本。
    • 如果环境中没有明显变化或上述步骤没有帮助,请咨询环境故障排除指南或联系Palantir客服支持以获得进一步的帮助。

3.(可选)在上一步故障排除期间,使用会话固定功能,首先确保固定版本的环境有效,并在找到更永久的解决方案时暂时解除Workbook的功能阻止。

  1. 在发现环境出错的根本原因后,相应地调整您的配置文件设置以永久解决该情况。