我可以将多个文件从S3读入Spark Dataframe中,并传递不存在的文件吗?

我可以将多个文件从S3读入Spark Dataframe中,并传递不存在的文件吗?,第1张

我可以将多个文件从S3读入Spark Dataframe中,并传递不存在的文件吗?

是的,如果您将指定输入的方法更改为hadoop全局模式,则是可能的,例如:

files = 's3a://dev/2017/01/{02,03}/data.parquet'df = session.read.parquet(files)

您可以在Hadoop
javadoc中
阅读有关模式的更多信息。

但是,我认为这不是按时间(按您的情况按天)分区的数据的一种优雅的处理方式。如果您能够这样重命名目录

  • s3a://dev/2017/01/03/data.parquet
    ->
    s3a://dev/day=2017-01-03/data.parquet
  • s3a://dev/2017/01/02/data.parquet
    ->
    s3a://dev/day=2017-01-02/data.parquet

那么您可以利用Spark分区架构并通过以下方式读取数据:

session.read.parquet('s3a://dev/')     .where(col('day').between('2017-01-02', '2017-01-03')

这种方式也将省略空目录/不存在的目录。Additionall列

day
将出现在数据框中(在spark <2.1.0中为字符串,在spark> =
2.1.0中为datetime),因此您将知道每条记录存在于哪个目录中。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zaji/5654643.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存