与Apache Spark的Ocean的VS Code集成

Ocean for Apache Spark支持与Jupyter笔记本电脑集成已经有一段时间了,详情请参阅我们的文档.然而,许多开发人员希望在他们熟悉的IDE(如VS Code)中有这个交互式笔记本,这样他们就可以从其他IDE内置功能(包括Git集成)中受益。本文描述了如何使用VS Code运行Jupyter笔记本,而代码在Ocean for Apache Spark集群上执行。

这种设置提供了以下优点:

  • 由于Ocean for Apache Spark运行在Kubernetes上,因此不需要为开发目的提供集群。
  • 由于集群可以自动伸缩,因此数据工程师或数据科学家不需要猜测他们需要为开发目的提供多大的集群。
  • 每个开发人员都可以独立地运行他们的代码,而不用担心计算资源的问题——没有开发人员可以饿死其他人。雷竞技rabet官网
  • 每个开发人员都可以开发和测试不同版本的Spark,以及他们自己的依赖项和第三方库,而不会影响集群的其他部分。
  • 由于自动伸缩几乎是实时发生的,因此不需要设置删除计算资源的时间。雷竞技rabet官网
  • 支持有效利用来自多个实例族的现货实例,从而降低云提供商基础设施成本。

简而言之,Ocean for Apache Spark完全消除了基础设施管理的负担,并提供了持续优化和自动伸缩的基础设施,以便开发人员可以专注于解决业务问题。

设置一个VS Code环境

请遵循以下步骤:

  1. 克隆或下载Ocean Spark Examples回购:https://github.com/spotinst/ocean-spark-examples
  2. 下载最新版本的VS Code。
  3. 安装来自Microsoft的Jupyter插件。
  4. 复制.vscode文件夹和.gitignore您将从步骤1中克隆/下载的文件夹签入到Git存储库的代码根文件夹中。
  5. 创建或选择文件夹时,您要创建您的笔记本。请点击文件菜单,点击文件->新建文件…并选择Jupyter笔记本。
  6. 在VS Code编辑器中打开Jupyter笔记本。例如,请保存它VSCodeNotebookExample.ipynb本例中描述。
  7. 单击文件->新建文件…,然后选择文本文件。另存为Dockerfile,并将以下内容添加到Dockerfile中。
    从gcr。io/datamechanics/spark: platform-3.2-latest USER root RUN apt-get update && apt-get install -y python3 python3-pip libffi-dev ENV PYSPARK_MAJOR_PYTHON_VERSION=3 WORKDIR /opt/application/ COPY ./VSCodeNotebookExample.使用实例ipynb。运行pip3 install jupyter运行jupyter nbconvert—到脚本VSCodeNotebookExample.ipynb
  8. 上面的Dockerfile在Docker映像构建过程中将ipynb文件转换为python文件。如果要使用任何第三方库,请将它们包含在文件并在上面的脚本中运行它。
  9. 文件夹结构应该如下所示:
  10. 单击运行和调试图标。如果你看到“运行和调试”按钮,点击它。
  11. 选择“连接到远程Jupyter”,如果它还没有被选中,然后点击播放(三角形)按钮。
  12. 当出现提示时,输入Ocean for Apache Spark集群id并按Enter键。Ocean for Apache Spark Cluster ID
  13. 在出现提示时输入Spot个人访问令牌并按Enter键。输入访问令牌
  14. 您应该看到笔记本应用程序在终端中启动。复制输出中的URL,如下:
  15. 例如,单击Explorer并打开代码文件VSCodeNotebookExample.ipynb
  16. 单击“查看->命令面板…”并选择“Jupyter:指定Jupyter服务器用于连接”。
  17. 单击“现有”,复制步骤14中复制的URL,然后单击“Enter”。
  18. 单击右边的内核选择器。
  19. 它应该显示用于Apache Spark的Ocean中可用的模板。选择要用于运行笔记本的模板。
  20. 你可以运行笔记本上的命令。当您运行该命令时,您可能会看到Notebook应用程序在Spot控制台UI中启动。

使用Github动作和气流的端到端示例

下面的例子展示了如何使用Github动作,Github容器注册表和气流端到端运行笔记本应用程序。请注意,你可以使用你喜欢的Git存储库、CI/CD工具、容器注册表和工作流工具。

在VS code中进行更改并签入代码

每当你在VS code编辑器中进行代码更改并保存文件时,它会在源代码控制图标处显示挂起的更改。

单击源控制图标,输入提交消息,然后单击提交。

然后单击Sync Changes将更改提交到远程存储库。

构建和推送Docker映像到容器注册表中

在Github,创建两个Github秘密

  • GHCR_PASSWORD-使用这个秘密发布docker镜像到Github docker容器注册表。与此秘密关联的个人访问令牌具有读、写和删除包的权限。
  • GHCR_PULL_PASSWORD-在api中使用这个秘密,气流从容器注册表中提取图像。与此秘密关联的个人访问令牌具有读包权限。

在Github存储库中,从存储库的Actions菜单中创建一个新的工作流(Actions -> new workflow)。在“选择工作流”屏幕中,它在此存储库的建议部分中显示Docker Image。点击“配置”。给它起一个名字,比如vscode-jupyter-notebooks-cicd.yml,以以下内容为模板。单击“Start Commit”并直接提交到主分支。

每当代码签入发生在“vcode -jupyter-notebooks”文件夹在存储库主分支,一个图像被构建并存储在Github容器注册表。

创建Kubernetes秘密,并在气流中使用它

创建一个连接到Github Docker容器注册表的Kubernetes秘密来提取图像。确保您在spark-apps名称空间。

下面的说明提供了使用命令行创建秘密的步骤kubectl

  • 将上下文设置为“spark-apps”命名空间。
Kubectl配置set-context——current——namespace=spark-apps
  • 创造秘密。
Kubectl创建秘密docker-registry{给出一个名称,如github-pull-image-secret}——docker-server="https://ghcr。——docker-username={Github用户名}——docker-password={有包读权限的个人访问令牌}——docker-email={Github用户的电子邮件}
  • 使用上面在配置覆盖气流DAG部分创建的Kubernetes秘密。
config_overrides = {"type": "Python", "sparkVersion": "3.2.0", "imagePullSecrets": ["github-pull-image-secret"], "image": "ghcr. exe " . "Io /{image的路径}",…}

结论-最后的想法

使用VS Code作为开发环境,使用Ocean for Apache Spark作为计算层的能力为开发人员提供了最佳的开发体验和廉价的计算来开发数据工程应用程序。

上面的例子展示了Github操作和Github容器注册表,但是你可以使用任何你喜欢的CI/CD工具和容器注册表来构建和托管Docker映像。

开始为Apache Spark使用Ocean

VS Code只是几个内置集成之一Ocean for Apache Spark支持数据团队使用Kubernetes运行Spark应用程序。了解如何使用Ocean for Apache Spark轻松设置、配置和扩展Spark应用程序和Kubernetes集群。我们邀请你安排初次会面与我们的Apache Spark解决方案架构师团队一起,我们雷电竞官网进入可以讨论您的用例,并帮助您成功登录我们的平台。