如何使用 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]
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]