我Apache Spark在AWS中创建了一个3节点(1个主节点,2个工作节点)集群.我可以从主服务器向集群提交作业,但是我无法远程工作.
/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
object SimpleApp {
def main(args: Array[String]) {
val logFile = "/usr/local/spark/README.md" // Should be some file on your system
val conf = new SparkConf().setAppName("Simple Application").setMaster("spark://ec2-54-245-111-320.compute-1.amazonaws.com:7077")
val sc = new SparkContext(conf)
val logData = sc.textFile(logFile, 2).cache()
val numAs = logData.filter(line => line.contains("a")).count()
val numBs = logData.filter(line => line.contains("b")).count()
println(s"Lines with a: $numAs, Lines with b: $numBs")
sc.stop()
}
}
Run Code Online (Sandbox Code Playgroud)
我可以从大师那里看到:
Spark Master at spark://ip-171-13-22-125.ec2.internal:7077
URL: spark://ip-171-13-22-125.ec2.internal:7077
REST URL: …Run Code Online (Sandbox Code Playgroud) 我希望连接到远程集群并执行 Spark 进程。因此,根据我的阅读,这是在 SparkConf 中指定的。
val conf = new SparkConf()
.setAppName("MyAppName")
.setMaster("spark://my_ip:7077")
Run Code Online (Sandbox Code Playgroud)
其中 my_ip 是我的集群的 IP 地址。不幸的是,我的连接被拒绝了。所以,我猜必须添加一些凭据才能正确连接。我将如何指定凭据?似乎可以用 .set(key, value) 来完成,但没有这方面的线索。