首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Spark的worker节点中读取文件?

如何在Spark的worker节点中读取文件?
EN

Stack Overflow用户
提问于 2020-07-27 17:42:17
回答 1查看 213关注 0票数 2

我正在开发一个spark应用程序,它需要读取工作节点上的文件。我为我的rdd创建了一个映射,如下所示:

代码语言:javascript
复制
        SparkConf conf = new SparkConf().setAppName("startingSpark").setMaster("local[*]");
        JavaSparkContext sc = new JavaSparkContext(conf);              
        JavaRDD<String> file = sc.textFile("D:\\myFile.txt");
        JavaPairRDD<String, String> pairs = file.mapToPair(s -> new Tuple2<>((int)(Integer.parseInt(s.split(",")[1])/100)+"", s.split(",")[1])/100)+"#"+s));

现在,我想根据每个worker节点上的键值读取文件。

代码语言:javascript
复制
JavaPairRDD<String, String> rdd1 = pairs.reduceByKey(new Function2<String, String, String>() {
                
        @Override
        public String call(String v1, String v2) throws Exception {
            String key=v2.split("#")[0];
            JavaRDD <String> br =sc.textFile(key+".txt");
                    return v1+" "+v2;
                }
            }); 

它会给出一个错误:

代码语言:javascript
复制
java.io.NotSerializableException: org.apache.spark.api.java.JavaSparkContext 

我尝试过用我的主类实现java.io.Serializable,但是没有成功。任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2020-07-27 17:51:08

代码语言:javascript
复制
java.io.NotSerializableException: org.apache.spark.api.java.JavaSparkContext 

上面的异常是因为您的所有工作节点都无法识别路径"D:\myFile.txt“

您不需要在代码中实现任何额外的逻辑,只需使用将源文件放入HDFS路径,然后替换为下面

代码语言:javascript
复制
JavaRDD<String> file = sc.textFile("hdfs:\\localhost\xx\\xx.txt");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63112621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档