假设我有一个Dataset [MyData],其中MyData定义为:
case class MyData(id: String, listA: List[SomeOtherCaseClass])
我想将数据保存到s3并在以后使用MyData case类加载回去。 我知道案例类数据是可序列化的。但是有可能这样做:
myData.write.xxxx("s3://someBucket/some")
// later
val myloadedData: Dataset[MyData] = spark.read.yyyy("s3://someBucket/some", MyData)
答案 0 :(得分:0)
串行化对您意味着什么?
因为您只需要按照显示的内容做,请选择您喜欢的任何available format,例如csv
,json
,parquet
,orc
,...
(我建议您在 ORC 和 Parquet 之间进行一次benchmarking处理,以查看哪种方法更适合您)。
myData.write.orc("s3://someBucket/somePath")
而且,在阅读时,只需使用相同的格式即可退回DataFrame
,您可以使用as[T]
method将其转换为Dataset[MyData]
。
val myloadedData: Dataset[MyData] = spark.read.orc("s3://someBucket/somePath").as[MyData]
或者,您的问题是如何连接到 S3 ? -如果是这样,如果您是通过 EMR 运行的,那么一切都已设置完毕。您只需像以前那样在路径之前加上s3://
。