我有一个用docker swarm构建的Spark和hadoop集群。它们在同一网络下标识。我用Scala编写了一个简单的WordCount示例:
val spark = SparkSession.builder().master("local").appName("test").getOrCreate()
val data = spark.sparkContext.textFile("hdfs://10.0.3.16:8088/Sample.txt")
val counts = data.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _)
counts.foreach(println)
当我在spark的主节点容器中运行代码时,IP地址随容器的名称而变化,并发生错误
主机名在索引12处的非法字符:hdfs://spark_namenode.1.ywlf9yx9hcm4duhxnywn91i35.spark_overlay:9000
而且我无法更改容器名称,因为在docker swarm中不允许使用它。