今天工作完成了,利用时间学习spark,开启学习的第一步,debug代码。在这篇文章中,我将解释如何设置我的调试器以在 Spark 代码库中命中断点,以便能够调试 Spark Scala、Java 和 Python 代码。
准备在本地设置 Spark 涉及下载 Hadoop 二进制文件和 Spark 源代码。我将在本教程中使用 IntelliJ,但理论上,任何允许您运行和调试基于 JVM 的语言的 IDE 都应该这样做。这是在 Macbook Pro 上设置的
你需要什么
您需要安装 Java 11。任何 LTS 或 8 之后的版本都应该这样做。
已安装 Maven 3.6.3 或更高版本。
已安装 Scala 2.12.10 或更高版本。
已安装 Python 3。
至少 8 GB 的 RAM。
Jetbrains IntelliJ IDE。我使用的是 Ultimate 版本,但这在 Community 版本上应该可以正常工作。
设置我们将下载并设置 Hadoop 和 Spark。之后我们将配置 IntelliJ。最耗时的阶段将是 Spark 编译。
设置 Hadoop我们需要先安装 Hadoop 二进制文件。Hadoop 3.2.2 是本教程中将使用的二进制版本。只要您设置的 Hadoop 版本与您使用的 Spark 版本兼容,我们应该没问题。该过程在版本中没有太大变化。(https://hadoop.apache.org/releases.html获取 Hadoop 二进制文件)
有一个Downloads存放所有下载文件的文件夹,还是将 Hadoop 文件解压缩到其他位置吧。
完成后,添加一个条目在.profile中以便HADOOP_HOME在启动时声明。在终端执行
echo 'export HADOOP_HOME="/Users/shuaige/Downloads/hadoop-3.2.2/bin"' >> ~/.profile
要检查环境变量指向正确的位置,如果在 Mac 或 Linux 变体上,请在命令行中键入以下内容。
env | grep HADOOP_HOME
设置Spark我们将 git 克隆 Apache Spark 存储库并在本地编译它。克隆 Spark 存储库。
git clone https://github.com/apache/spark
切换到目录并使用以下命令从源代码构建 Spark。在没有sudo的情况下运行 maven build 命令,这样 IntelliJ 在尝试构建或读取目标文件夹时不会给您带来问题。挂在那里,编译可能需要一段时间
cd spark mvn -DskipTests clean package
构建完成后,您可以通过运行 bin 文件夹中的一个二进制文件来测试 Spark 是否已正确构建。
bin/spark-shell
您应该会看到类似于下面的屏幕截图的内容。这就完成了。
启动IntelliJ,打开最近编译的Spark目录。索引可能需要一段时间,但是您不会等到索引完成后再继续其余的步骤。
首先我们进入IntelliJ > Preferences > Build, Execution, Deployment > Compiler > Java Compiler 菜单,像截图一样设置。
索引应该已经完成了。如果没有,我们别无选择,只能等待。休息一下。
Java 示例我们会设置JavaSparkPi的例子让它是可调试的。对于任何java示例,您都可以遵循这个过程。
进入“Run > Edit Configurations”。
在下面的页面上,单击+按钮并选择Application。填写如下图所示的配置。
对于Program arguments,复制-粘贴下面的内容,jar包具体看版本。
--classorg.apache.spark.examples.JavaSparkPi--masterlocalexamples/target/original-spark-examples_2.12-3.0.0-SNAPSHOT.jar
显示以下即成功了。