Spark saveAsTextFile无法正常工作,请参考以下代码

时间:2019-02-23 14:47:04

标签: apache-spark hadoop

val reduced_rdd = mofm.reduceByKey(_ + _)
                      .map(item => item.swap)
                      .sortByKey(false)
                      .take(5)
                      .saveAsTextFile("/home/scrapbook/tutorial/IPLData/")

给出错误:

<console>:40: error: value saveAsTextFile is not a member of Array[(Int, String)]
   val reduced_rdd = mofm.reduceByKey(_ + _).map(item => item.swap).sortByKey(false).take(5).saveAsTextFile("/home/scrapbook/tutorial/IPLData/")

2 个答案:

答案 0 :(得分:0)

public class Program
{
    public static void Main()
    {
        IBar<IX> x = new Bar<Y>() { };
        // ^^^ Cannot implicitly convert type 'Bar<Y>' to 'IBar<IX>'. An explicit conversion exists (are you missing a cast?)
    }
}

public interface IBar<T> where T : IX
{
    void In(T item);

    T Out { get; }
}

public class Bar<T> : IBar<T> where T : IX
{
    public void In(T item) { }

    public T Out { get { return default(T); } }
}

public interface IX { }

public class Y : IX { }

导致RDD类型被删除。

saveAsTextFile需要一个RDD;您在take(5)或collect之后不再拥有它。

您需要:

.take(5) or .collect 

答案 1 :(得分:0)

take(5) is an action on RDD which returns a Array (list).

这意味着没有调用saveAsTextFile方法,因为数组没有此类方法。

这也是错误提示-

  

saveAsTextFile不是数组的成员

对RDD进行的任何操作都会返回实际的数据集(取决于调用的操作)

您可以在此处了解Spark中的不同操作功能-Actions in Spark RDD

现在,如果要将RDD中的数据保存到文本文件中,则需要在rdd上调用saveAsTextFile(“ path_to_file”)。