如何使用 Spark 从保存的文件中加载数据

How to load data from saved file with Spark

Spark 提供方法 saveAsTextFile 可以轻松地将 RDD[T] 存储到磁盘或 hdfs。

T 是任意可序列化的 class。

我要逆向操作。 我想知道有没有loadFromTextFile可以轻松加载文件到RDD[T]

让我说清楚:

class A extends Serializable {
...
}

val path:String = "hdfs..."
val d1:RDD[A] = create_A

d1.saveAsTextFile(path)

val d2:RDD[A] = a_load_function(path) // this is the function I want

//d2 should be the same as d1

创建基于文件的RDD,我们可以使用SparkContext.textFile API

下面是一个例子:

val textFile = sc.textFile("input.txt")

我们可以明确指定 URI。

如果文件在 HDFS 中:
sc.textFile("hdfs://host:port/filepath")

如果文件在本地:
sc.textFile("file:///path to the file/")

如果文件是S3:

s3.textFile("s3n://mybucket/sample.txt");

要将 RDD 加载到特定类型:

case class Person(name: String, age: Int)

val people = sc.textFile("employees.txt").map(_.split(",")).map(p => Person(p(0), p(1 ).trim.toInt))

在这里,人的类型是org.apache.spark.rdd.RDD[人]

尝试使用d1.saveAsObjectFile(path)存储和val d2 = sc.objectFile[A](path)加载。

我认为如果不从 RDD[String]

进行转换,您不能 saveAsTextFile 并将其读出为 RDD[A]