Spark离线日志分析,连接Spark出现报错

首先,我的代码是这样的

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

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

    //获取SparkConf
    val sparkConf = new SparkConf().setMaster("local[2]").setAppName("PV-Count")
    //创建SparkContext
    val sparkContext = new SparkContext(sparkConf)
    //读取文件
    val fileRDD: RDD[String] = sparkContext.textFile("file:////Users/zhaozhuang/Desktop/4、Spark/Spark第二天/第二天教案/资料/运营商日志/access.log")
    //统计数量
    val count = fileRDD.count()

    println("一共有"+count+"行数据")

    sparkContext.stop()
  }
}

我的Spark是装在虚拟机上的,然后运行就报错

java.net.BindException: Can’t assign requested address: Service ‘sparkDriver’ failed after 16 retries (on a random free port)! Consider explicitly setting the appropriate binding address for the service ‘sparkDriver’ (for example spark.driver.bindAddress for SparkDriver) to the correct binding address.
 
大概翻译一哈:
java.net.BindException:无法分配请求的地址:'sparkDriver’服务在16次重试后(在一个随机自由的端口上)失败了!考虑显式地适当的将’sparkDriver’服务(比如 SparkDriver的spark.driver.bindAddress)绑定到正确的绑定地址
 
虽然翻译了出来,但我还是没完全明白,就知道是地址错误之类的
在这里插入图片描述

然后查阅了各种方法,都没用,看到了一个和我的报错并不相同的解决办法,我还是决定试试

val sparkConf = new SparkConf().setMaster("local[2]").setAppName("PV-Count").set("spark.driver.host", "localhost")

在sparkConf中添加了一个设置,就奇迹般地成功了
在这里插入图片描述
但是我的Spark是安装在虚拟机的,为啥?
所以我又把localhost改成了node01(我虚拟机的主机名),结果又报同样的错
为什么?还是没搞懂原因,不过有解决办法了,所以先记录一下,找到原因再来解决吧

posted @ 2020-04-12 17:48  _codeRookie  阅读(1278)  评论(1编辑  收藏  举报