我可以读取一个csv文件myexample.csv
,这是在一个s3 buket到火花数据。
df = spark.read.csv(s3n://mybucket/myexample.csv)
但是我如何读取桶中的所有csv文件,例如myexample1.csv、myexample2.csv、myexample.csv,它们都位于同一个存储桶s3://mybucket中。
df = spark.read.csv(s3n://mybucket/)
..This工作吗?
发布于 2019-11-19 08:06:02
如果您想要读取多个特定类型的文件(CSV、JSONlines、合并兼容模式等),将合并兼容模式读入单个数据集,方法如下:
spark.read.format(...).option("mergeSchema", true).load(files: _*)
如果某些模式不兼容合并,但可以转换为公共模式,那么对于每一组具有合并兼容模式的文件,都应该重复上面的内容,然后将产生的数据映射到一个公共模式中,并统一起来,例如:
val fileListsAndTransforms: Seq[Seq[String], DataFrame => DataFrame] = ...
fileListsAndTransforms.map { case (files, fn) =>
spark.read.format(...).option("mergeSchema", true).load(files: _*)
.transform(fn)
}.reduce(_ unionByName _)
代码示例在Scala中,但它们在任何星火支持的语言中都可以很好地应用。
https://stackoverflow.com/questions/58907796
复制相似问题