gpt4 book ai didi

scala - 在 Spark 脚本中放入 Scala 解释器?

转载 作者:行者123 更新时间:2023-12-04 12:45:57 25 4
gpt4 key购买 nike

我正在使用 Scala 2.11.8和 Spark 2.1.0 .我对 Scala 完全陌生。

有没有一种简单的方法来添加单行断点,类似于Python:

import pdb; pdb.set_trace()

我将在哪里被放入 Scala shell 中,我可以检查脚本中该行的执行情况? (我也会满足于剧本的结尾......)

我目前正在像这样开始我的脚本:
$SPARK_HOME/bin/spark-submit --class "MyClassName" --master local target/scala-2.11/my-class-name_2.11-1.0.jar

有没有办法做到这一点?将极大地帮助调试。

编辑:本 other SO post 中的解决方案不是很有帮助/需要很多样板+没有工作。

最佳答案

我会推荐以下两个选项之一:

远程调试 & IntelliJ Idea 的“评估表达式”

这里的基本思想是,您可以像调试您的应用程序一样调试您的应用程序,如果它只是从您的 IDE 中调试的一段普通代码。 Run->Evaluate expression函数允许您对代码进行原型(prototype)设计,并且您可以使用大多数调试器的常用变量显示、步进(越过)等功能。但是,由于您不是在 IDE 中运行应用程序,因此您需要:

  • 设置用于远程调试的 IDE 和
  • 为应用程序提供正确的 Java 选项以进行远程调试。

  • 对于 1,请转到 Run->Edit configurations ,点击 +右上角的按钮,选择远程,复制 Command line arguments for running remote JVM下的文本字段的内容( official help)。

    对于 2,您可以使用 SPARK_SUBMIT_OPTS传递这些 JVM 选项的环境变量,例如:
    SPARK_SUBMIT_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" \
    $SPARK_HOME/bin/spark-submit --class Main --master "spark://127.0.0.1:7077" \
    ./path/to/foo-assembly-1.0.0.jar

    现在您可以点击 debug按钮,设置断点等。

    Apache 齐柏林飞艇

    如果您正在编写更多脚本风格的 Scala,您可能会发现在 Zeppelin Spark Scala 解释器中编写它很有帮助。虽然它更像是 Jupyter/IPython 笔记本/ ipython壳比 ( i ) pdb ,这确实允许您检查运行时发生的情况。这也将允许您绘制数据等。我将从 these docs 开始.

    警告

    我认为上面只允许调试在 Driver 节点上运行的代码,而不是在 Worker 节点上(运行你的实际 map、reduce 等函数)。例如,如果您在 myDataFrame.map{ ... } 内的匿名函数内设置断点,它可能不会被击中,因为这是在某个工作节点上执行的。但是,例如 myDataFrame.head以及评估表达式功能,我已经能够满足我的大部分调试需求。话虽如此,我还没有尝试将 Java 选项专门传递给执行程序,所以也许有可能(但可能很乏味)让它工作。

    关于scala - 在 Spark 脚本中放入 Scala 解释器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41647286/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com