如何在JAVA中编写SPARK映射函数来返回子字符串?

如何在JAVA中编写SPARK映射函数来返回子字符串?,java,apache-spark,Java,Apache Spark,我有一个JavaRDD对象,希望通过选择原始JavaRDD对象的子字符串来创建另一个新的JavaRDD对象。如何做到这一点 // Read input_train data logger.info("start to read file"); JavaRDD<String> inputDataRaw= sc.textFile(input_train); JavaRDD inputDataRaw=sc.textFile(输入序列); inputDataRaw.new

我有一个JavaRDD对象,希望通过选择原始JavaRDD对象的子字符串来创建另一个新的JavaRDD对象。如何做到这一点

 // Read input_train data
    logger.info("start to read file");
    JavaRDD<String> inputDataRaw= sc.textFile(input_train);
JavaRDD inputDataRaw=sc.textFile(输入序列);
inputDataRaw.new函数(){
公共字符串调用(字符串arg0)引发异常{
返回arg0.substring(0,6);
}
});

下面是一个简单的选项。我包括了较新的JDK8 lambda语法以及较旧的JDK6兼容语法:

    JavaRDD<String> inputDataRaw = sc.textFile("file.txt");

    JavaRDD<String> mapped_jdk8 = inputDataRaw.map(s -> s.substring(0, 6));

    JavaRDD<String> mapped_jdk6 = inputDataRaw.map(new Function<String, String>() {
        @Override
        public String call(String s) throws Exception {
            return s.substring(0, 6);
        }
    });
JavaRDD inputDataRaw=sc.textFile(“file.txt”);
javarddmapped_jdk8=inputDataRaw.map(s->s.substring(0,6));
JavaRDD mapped_jdk6=inputDataRaw.map(新函数(){
@凌驾
公共字符串调用(字符串s)引发异常{
返回s.substring(0,6);
}
});

我认为从一行中抓取第一个对象的子字符串不是一个好主意

substring(0,6) # this will help only when first object is of fixed size.
相反,首先将线与线分开;(逗号)并获取第一个索引

JavaRDD<String> inputDataRaw = sc.textFile("file.txt");

JavaRDD<String> mapped_jdk8 = inputDataRaw.map(s -> s.split(";")).map(r -> r(0)); 
JavaRDD inputDataRaw=sc.textFile(“file.txt”);
javarddmapped_jdk8=inputDataRaw.map(s->s.split(“;”).map(r->r(0));

尝试r[0]如果您在java中遇到任何语法错误,我没有在java中尝试lambda,但我只使用scala

使用
rdd.map()
-同时检查文档。这是Spark上的一个基本操作:@maasg谢谢你的指针。你能提供更多的细节吗?你能帮忙吗?
substring(0,6) # this will help only when first object is of fixed size.
JavaRDD<String> inputDataRaw = sc.textFile("file.txt");

JavaRDD<String> mapped_jdk8 = inputDataRaw.map(s -> s.split(";")).map(r -> r(0));