Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用java的RDD函数中的类型不匹配_Java_Apache Spark - Fatal编程技术网

使用java的RDD函数中的类型不匹配

使用java的RDD函数中的类型不匹配,java,apache-spark,Java,Apache Spark,我是新的火花,我做了一些简单的代码,但我得到的问题,而做的任务。我正在使用Java1.7SE和Spark2.0.1来完成一些任务 下面是我的代码 JavaRDD<String> newLine = line.flatMap(new FlatMapFunction<String, String>() { public List<String> call(String s) throws Exception { List<String

我是新的火花,我做了一些简单的代码,但我得到的问题,而做的任务。我正在使用Java1.7SE和Spark2.0.1来完成一些任务

下面是我的代码

JavaRDD<String> newLine = line.flatMap(new FlatMapFunction<String, String>() {
    public List<String> call(String s) throws Exception {
        List<String> ret = new ArrayList<String>();
        List<String> ls = Arrays.asList(s.split("\t"));

        String values = ls.get(ls.size()-1);
        List<String> value = Arrays.asList(values.split("\\|"));

        for(int i=0;i<value.size();++i){
            String ns = ls.get(0)+"\t"+ls.get(1)+"\t"+ls.get(2)+"\t"+ls.get(3)+"\t"+ls.get(4)+"\t"+ls.get(5);
            ns = ns + "\t" + value.get(i);
            ret.add(ns);
        }
        return ret;
    }
});
JavaRDD newLine=line.flatMap(新的flatMap函数(){
公共列表调用(字符串s)引发异常{
List ret=new ArrayList();
List ls=Arrays.asList(s.split(“\t”);
字符串值=ls.get(ls.size()-1);
列表值=Arrays.asList(values.split(“\\\\”);

对于(int i=0;i它应该在call()返回类型中返回
Iterator
not
List

   JavaRDD<String> newLine = line.flatMap(new FlatMapFunction<String, String>() {
        public Iterator<String> call(String s) throws Exception {
            List<String> ret = new ArrayList<String>();
            List<String> ls = Arrays.asList(s.split("\t"));

            String values = ls.get(ls.size()-1);
            List<String> value = Arrays.asList(values.split("\\|"));

            for(int i=0;i<value.size();++i){
                String ns = ls.get(0)+"\t"+ls.get(1)+"\t"+ls.get(2)+"\t"+ls.get(3)+"\t"+ls.get(4)+"\t"+ls.get(5);
                ns = ns + "\t" + value.get(i);
                ret.add(ns);
            }
            return ret.iterator();
        }
    });
JavaRDD newLine=line.flatMap(新的flatMap函数(){
公共迭代器调用(字符串s)引发异常{
List ret=new ArrayList();
List ls=Arrays.asList(s.split(“\t”);
字符串值=ls.get(ls.size()-1);
列表值=Arrays.asList(values.split(“\\\\”);

对于(int i=0;我认为它应该在
call()中返回
Iterator
而不是
List
返回类型。您不需要向flatmate函数添加一个与
call
方法相等的返回类型吗?
   JavaRDD<String> newLine = line.flatMap(new FlatMapFunction<String, String>() {
        public Iterator<String> call(String s) throws Exception {
            List<String> ret = new ArrayList<String>();
            List<String> ls = Arrays.asList(s.split("\t"));

            String values = ls.get(ls.size()-1);
            List<String> value = Arrays.asList(values.split("\\|"));

            for(int i=0;i<value.size();++i){
                String ns = ls.get(0)+"\t"+ls.get(1)+"\t"+ls.get(2)+"\t"+ls.get(3)+"\t"+ls.get(4)+"\t"+ls.get(5);
                ns = ns + "\t" + value.get(i);
                ret.add(ns);
            }
            return ret.iterator();
        }
    });