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
Scala 将保存的文本文件从Spark程序读入另一个程序_Scala_Apache Spark - Fatal编程技术网

Scala 将保存的文本文件从Spark程序读入另一个程序

Scala 将保存的文本文件从Spark程序读入另一个程序,scala,apache-spark,Scala,Apache Spark,我写了一个Spark程序,它接收一些输入,对数据做各种处理,在处理结束时,我有一个 val processedData = ... processedData的类型为RDD[(Key,List[Data]),其中Key和Data是我定义的case类 然后我打了电话 processedData.saveAsTextFile(location) 在那个位置有一个文件夹,其中包含一个成功文件和54个零件文件,我希望看到这些文件 现在,在另一个程序中,我刚刚开始编写对我的输出进行统计分析的程序,我从

我写了一个Spark程序,它接收一些输入,对数据做各种处理,在处理结束时,我有一个

val processedData = ...
processedData的类型为RDD[(Key,List[Data]),其中Key和Data是我定义的case类

然后我打了电话

processedData.saveAsTextFile(location)
在那个位置有一个文件夹,其中包含一个成功文件和54个零件文件,我希望看到这些文件

现在,在另一个程序中,我刚刚开始编写对我的输出进行统计分析的程序,我从以下内容开始:

val groupedData = sc.textFile(location).cache()
然而,我的IDE(正确地)认为groupedData是RDD[String]类型

告诉编译器/IDE groupedData是RDD[(Key,List[Data])类型的惯用方法是什么?

回放:

scala> sc.parallelize(List(1,2,3).zip(List("abc","def","ghi")))
res0: org.apache.spark.rdd.RDD[(Int, String)] = ParallelCollectionRDD[0] at parallelize at <console>:22

scala> res0.collect
res1: Array[(Int, String)] = Array((1,abc), (2,def), (3,ghi))

scala> res0.saveAsTextFile("file")

scala> sc.textFile("file")
res3: org.apache.spark.rdd.RDD[String] = file MapPartitionsRDD[3] at textFile at <console>:22

scala> res3.collect
res4: Array[String] = Array((1,abc), (2,def), (3,ghi))
scala>sc.parallelize(列表(1,2,3).zip(列表(“abc”、“def”、“ghi”))
res0:org.apache.spark.rdd.rdd[(Int,String)]=ParallelCollectionRDD[0]位于parallelize at:22
scala>res0.collect
res1:Array[(Int,String)]=数组((1,abc),(2,def),(3,ghi))
scala>res0.saveAsTextFile(“文件”)
scala>sc.textFile(“文件”)
res3:org.apache.spark.rdd.rdd[String]=textFile at:22处的文件MapPartitionsRDD[3]
scala>res3.collect
res4:Array[String]=数组((1,abc),(2,def),(3,ghi))
结果是简单的字符串作为toString方法表示。文件:

def saveAsTextFile(路径:字符串):单位

将此RDD另存为文本文件,即元素的字符串表示形式

如何解决:

scala> res0.saveAsObjectFile("file1")

scala> sc.objectFile[(Int,String)]("file1")
res9: org.apache.spark.rdd.RDD[(Int, String)] = MapPartitionsRDD[11] at objectFile at <console>:22

scala> res9.collect
res10: Array[(Int, String)] = Array((1,abc), (2,def), (3,ghi))
scala>res0.saveAsObject文件(“文件1”)
scala>sc.objectFile[(Int,String)](“文件1”)
res9:org.apache.spark.rdd.rdd[(Int,String)]=MapPartitionsRDD[11]位于22处的objectFile
scala>res9.collect
res10:Array[(Int,String)]=数组((1,abc),(2,def),(3,ghi))
文件:

def saveAsObjectFile(路径:字符串):单位

将此RDD另存为一组序列化对象

注意,从文件读取时必须指定类型参数。反序列化是必要的。Spark想知道要检索的内容。

播放:

scala> sc.parallelize(List(1,2,3).zip(List("abc","def","ghi")))
res0: org.apache.spark.rdd.RDD[(Int, String)] = ParallelCollectionRDD[0] at parallelize at <console>:22

scala> res0.collect
res1: Array[(Int, String)] = Array((1,abc), (2,def), (3,ghi))

scala> res0.saveAsTextFile("file")

scala> sc.textFile("file")
res3: org.apache.spark.rdd.RDD[String] = file MapPartitionsRDD[3] at textFile at <console>:22

scala> res3.collect
res4: Array[String] = Array((1,abc), (2,def), (3,ghi))
scala>sc.parallelize(列表(1,2,3).zip(列表(“abc”、“def”、“ghi”))
res0:org.apache.spark.rdd.rdd[(Int,String)]=ParallelCollectionRDD[0]位于parallelize at:22
scala>res0.collect
res1:Array[(Int,String)]=数组((1,abc),(2,def),(3,ghi))
scala>res0.saveAsTextFile(“文件”)
scala>sc.textFile(“文件”)
res3:org.apache.spark.rdd.rdd[String]=textFile at:22处的文件MapPartitionsRDD[3]
scala>res3.collect
res4:Array[String]=数组((1,abc),(2,def),(3,ghi))
结果是简单的字符串作为toString方法表示。文件:

def saveAsTextFile(路径:字符串):单位

将此RDD另存为文本文件,即元素的字符串表示形式

如何解决:

scala> res0.saveAsObjectFile("file1")

scala> sc.objectFile[(Int,String)]("file1")
res9: org.apache.spark.rdd.RDD[(Int, String)] = MapPartitionsRDD[11] at objectFile at <console>:22

scala> res9.collect
res10: Array[(Int, String)] = Array((1,abc), (2,def), (3,ghi))
scala>res0.saveAsObject文件(“文件1”)
scala>sc.objectFile[(Int,String)](“文件1”)
res9:org.apache.spark.rdd.rdd[(Int,String)]=MapPartitionsRDD[11]位于22处的objectFile
scala>res9.collect
res10:Array[(Int,String)]=数组((1,abc),(2,def),(3,ghi))
文件:

def saveAsObjectFile(路径:字符串):单位

将此RDD另存为一组序列化对象

注意,从文件读取时必须指定类型参数。反序列化是必要的。Spark想知道要检索什么