Spark本地调试和远程调试

本地调试:
代码:

package com.atguigu

import org.apache.spark.{SparkConf, SparkContext}

object WordCount{

  def main(args: Array[String]): Unit = {

//创建SparkConf并设置App名称
    val conf = new SparkConf().setAppName("WC").setMaster("local[*]")

//创建SparkContext,该对象是提交Spark App的入口
    val sc = new SparkContext(conf)

    //使用sc创建RDD并执行相应的transformation和action
    sc.textFile(args(0)).flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_, 1).sortBy(_._2, false).saveAsTextFile(args(1))

    sc.stop()
  }
}

如果出现异常如下:
java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries.
原因是spark本地调试需要hadoop环境依赖,在运行环境中指定hadoop路径即可
在这里插入图片描述

远程调试:
通过IDEA进行远程调试,主要是将IDEA作为Driver来提交应用程序,配置过程如下:
修改sparkConf,添加最终需要运行的Jar包、Driver程序的地址,并设置Master的提交地址:

val conf = new SparkConf().setAppName("WC")
.setMaster("spark://hadoop102:7077")
.setJars(List("E:\\SparkIDEA\\spark_test\\target\\WordCount.jar"))

然后加入断点,直接调试即可:

spark的pom文件

<dependencies>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.1.1</version>
    </dependency>
</dependencies>
<build>
        <finalName>WordCount</finalName>
        <plugins>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.2</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>3.0.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>WordCount(修改)</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
</build>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要对Spark程序进行远程提交和调试,需要按照以下步骤进行操作: 1. 确保本地和远程机器上都已经安装了Spark,并且版本相同。 2. 在本地机器上编写Spark程序,并将其打包成jar文件。 3. 将jar文件上传到远程机器上。 4. 在远程机器上启动Spark集群,并确保集群中的所有节点都已经启动。 5. 在远程机器上使用spark-submit命令提交Spark程序,指定jar文件的路径和程序的参数。 6. 在远程机器上使用Spark Web UI或者日志来监控程序的运行情况。 7. 如果需要调试程序,可以在程序中添加日志输出或者使用调试工具进行调试。 总之,远程提交和调试Spark程序需要注意版本兼容性、集群启动和程序参数等方面的问题,需要仔细操作才能保证程序的正确运行。 ### 回答2: IDEA是一种Java开发工具,支持Spark程序的开发和调试。通常情况下,开发人员需要在本地机器上安装Spark,并在本地运行程序以测试和调试程序。但是,当程序变得更加复杂和数据量更大时,本地运行可能变得困难。在这种情况下,远程提交Spark程序是一个更好的选择,这可以提高程序的运行效率,并在更大的数据量下进行测试和调试。 在IDEA中,可以使用远程提交Spark程序来启动集群中的Spark服务器并提交任务。要使用远程提交,需要在IDEA中创建一个Spark配置文件,并将其配置为Spark集群的地址和端口。然后,可以通过在IDEA中单击“运行”按钮来启动Spark服务器。该服务器将连接到Spark集群并启动应用程序。在IDEA中运行的远程Spark任务将在Spark集群上运行,而不是在本地机器上运行。 为了进行调试,可以在IDEA中配置Spark调试模式。将程序连接到远程Spark集群之后,可以设置调试断点,并通过IDEA的调试工具来监视变量和堆栈跟踪。这使得对Spark程序进行远程调试变得容易。同时,方便了集群环境下多个程序同时运行。 总的来说,在IDEA中使用远程提交和调试功能,可以更有效地测试和调试Spark程序。这种方法可以帮助开发人员在快速增长的数据量和复杂性中更好的创建Spark程序。 ### 回答3: Spark是一个开源的分布式计算框架,它提供了高效的数据处理能力和强大的分布式计算支持。然而,现实世界中,我们经常需要在开发环境之外的远程机器上进行Spark程序的开发和运行,因此需要通过远程提交和调试的方式来进行程序的部署和调试。 在这种情况下,我们可以使用idea来进行远程提交和调试Spark程序。首先,需要在远程机器上安装和配置Spark环境,包括配置Spark的路径、环境变量、Master和Worker节点等。在idea中,可以通过添加远程配置来设置远程机器的连接信息,并设置远程Spark的运行模式,如local模式或者standalone模式等。 接下来,需要在idea中创建一个Spark应用程序,并将其打包成jar包。然后,在idea中选择远程Run或Debug配置,并选择远程主机。在远程配置中,需要指定远程机器上的Spark的路径和环境变量等参数,并将打包好的jar包上传到远程机器上。 在进行远程调试时,可以在idea中设置断点,然后在远程机器上运行 Spark 集群,并运行远程调试。在远程调试控制台中,可以通过命令行方式运行 Spark 应用,并在 idea 中进行调试。此时,idea会自动连接到远程 Spark 应用程序,并将调试信息返回给本地 ide 控制台中。 总体而言,通过使用 idea 来进行远程提交和调试 Spark 程序的方法可以大大提高开发和部署的效率。但是需要注意的是,在使用远程方式进行开发和部署时,需要考虑到网络延迟、数据传输等因素,以便更好地运行和优化 Spark 应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值