TextIO.read()
和AvroIO.read()
(以及其他一些BeamIO)默认情况下在当前Apache Beam运行器中读取扩展为大量文件的文件时表现不佳-例如,1M文件。
如何高效读取如此大量的文件?
当您事先知道使用TextIO
或AvroIO
读取的文件将扩展为大量文件时,您可以使用最近添加的功能. withHintMatchesManyFiles()
,该功能目前在TextIO
和AvroIO
上实现。
例如:
PCollection<String> lines = p.apply(TextIO.read()
.from("gs://some-bucket/many/files/*")
.withHintMatchesManyFiles());
使用此提示会导致转换以优化的方式执行以读取大量文件:在这种情况下可以读取的文件数量实际上是无限的,并且很可能管道将比没有此提示运行得更快、更便宜、更可靠。
但是,如果filepattern实际上仅匹配少量文件(例如,几十个或几百个文件),它的性能可能比没有提示更差。
在底层,此提示导致转换分别通过TextIO. readAll()
或AvroIO.readAll()
执行,这是更灵活和可扩展的read()
版本,允许读取PCollection
相关问题
- 使用djs v13播放本地音乐文件
- 不和谐机器人无法读取命令
- 在不下载文件的情况下使用YouTube的机器人播放音乐
- 创建一个不和谐机器人来播放. mp3文件
- 如何使用pygame自动完成歌曲后播放文件中的下一首歌曲
- 如何防止Spring Boot将危险控制器包含在生产配置文件中?
- 如何使用Gradle解压Jar文件时出现文件夹?
- Gradle不包含要jar的资源文件夹[重复]
- gradle任务和groovy文件上的导入
- 在jpack中复制Maven依赖文件和运行时
- 如何在同一段上的两个读取操作在并发HashMap中同时工作?
- JavaFX从FXML文件编辑Gridpane
- 当Reader和Writer线程在ConCurrentHashMap上相同的管理时的性能
- 在调整大小时读取并发HashMap
- 当在并发哈希图中调整大小时,读取将如何发生?
- 飞碟/iTextPDF找不到css文件
- 使用Kafka在应用程序上打开太多文件时出错
- R-光栅函数NAs值在ASCII文件中低于-9999
- 如何在R中读取utf-8格式的数据?
- 将文件转换为iso-8859-1(从utf-8可以,但在us-ascii文件上失败)