如何从Spark数据集到S3或从S3序列化案例类/反序列化

时间:2019-01-30 01:47:10

标签: scala apache-spark amazon-s3

假设我有一个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)

1 个答案:

答案 0 :(得分:0)

串行化对您意味着什么?

因为您只需要按照显示的内容做,请选择您喜欢的任何available format,例如csvjsonparquetorc,...
(我建议您在 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://