该帖子看起来可能有点长,但我提供了所有具体的细节以帮助读者实现我想要达到的目标以及我已经拥有的所有内容完成但仍然遇到问题。Spark从本地机器重定向到Remore群集无法看到远程服务器上的数据
我试图从eclipse在Windows 7计算机上本地运行的远程集群提交spark工作,但遇到关于在集群节点上查找数据输入路径的问题。我遵循在这个论坛中提出的建议来配置sparkContext,其中我将spark.driver.host设置为Windows机器的IP地址。
SparkConf sparkConf = new SparkConf().setAppName("Count Lines")
.set("spark.driver.host", "9.1.194.199") //IP address of Windows 7
.set("spark.driver.port", "51910")
.set("spark.fileserver.port", "51811")
.set("spark.broadcast.port", "51812")
.set("spark.replClassServer.port", "51813")
.set("spark.blockManager.port", "51814")
.setMaster("spark://master.aa.bb.com:7077"); //mater hostname
我也不得不HADOOP_HOME设置为C:\ winutils在Eclipse中,要能在Windows上运行此代码。 后来我设置哪些火花集群中的所有节点上都存在如下
String topDir = "/data07/html/test";
JavaRDD<String> lines = sc.textFile(topDir+"/*");
不过,我得到以下错误的路径数据。
5319 [main] INFO org.apache.spark.SparkContext - Created broadcast 0 from textFile at CountLines2.java:65
Exception in thread "main" org.apache.hadoop.mapred.InvalidInputException: Input Pattern file:/data07/html/test/* matches 0 files
at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:251)
at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:270)
at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:201)
at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:205)
现在考虑一个事实,即运行在Eclipse中的代码需要本地的Hadoop安装(即HADOOP_HOME设置到C:\ winutils),我修改为使用Windows计算机上本地存在的数据路径的代码。通过这种修改,该程序进一步发展并在集群的所有节点上启动任务,但后来由于其他错误而导致路径问题失败。
105926 [task-result-getter-2] INFO org.apache.spark.scheduler.TaskSetManager - Lost task 15.2 in stage 0.0 (TID 162) on executor master.aa.bb.com: java.lang.IllegalArgumentException (java.net.URISyntaxException: Relative path in absolute URI: C:%5Cdata%5CMedicalSieve%5Crepositories%5Craw%5CMedscape%5Cclinical/*) [duplicate 162]
Exception in thread "main" org.apache.spark.SparkException: Job aborted due to stage failure: Task 44 in stage 0.0 failed 4 times, most recent failure: Lost task 44.3 in stage 0.0 (TID 148, aalim03.almaden.ibm.com): java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: C:%5Cdata%5Chtml%5Ctest/*
at org.apache.hadoop.fs.Path.initialize(Path.java:206)
at org.apache.hadoop.fs.Path.<init>(Path.java:172)
at org.apache.hadoop.util.StringUtils.stringToPath(StringUtils.java:241)
为什么司机需要访问数据?工作人员会对数据进行实际处理,所以我有点不清楚为什么需要这样做? – Deeps
那么,有人必须告诉工人该做什么,并能做到这一点,必须知道工作是什么。 – zero323
可否请您详细说明。通过驱动程序代码,他们不知道工作人员需要做什么?为什么驱动程序节点需要访问用于RDD的输入? – Deeps