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(我虚拟机的主机名),结果又报同样的错
为什么?还是没搞懂原因,不过有解决办法了,所以先记录一下,找到原因再来解决吧