gpt4 book ai didi

scala - 扩展从HDFS读取多个文件

转载 作者:行者123 更新时间:2023-12-02 21:41:11 27 4
gpt4 key购买 nike

如何从HDFS上的目录读取所有文件并使用缩放处理它。对于本地文件系统,我使用以下内容

import com.twitter.scalding._
import com.twitter.scalding.JsonLine
import java.io._

class ParseJsonJob(args: Args) extends Job(args) {
val fileList = new File(args("input")).listFiles
val fields = ('device_guid
,'service_name
,'event_type
)

fileList.map {
fileName =>
JsonLine(fileName.toString, fields)
.read
.filter ('service_name) { name: String => name == "myservice" }
.write(Tsv(args("output") + fileName.toString.split("/").last))
}
}

HDFS无法使用。除文件外,TextLine或JsonLine是否还读取目录?

最佳答案

您将获得一个Hadoop FileSystem,并使用FileSystem.liststatus原语扫描HDFS目录,例如:

...
val hadoopConf= implicitly[Mode] match {
case Hdfs(_, conf) => conf
}
val fs= FileSystem.get(hadoopConf)
for(status <- fs.listStatus(new Path(args("input")))) {
JsonLine(status.getPath.toString.toString, fields)
.read
.filter ('service_name) { name: String => name == "myservice" }
.write(Tsv(args("output") + fileName.toString.split("/").last))
}

关于scala - 扩展从HDFS读取多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28620732/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com