我在一个具有n
扩展名的目录中有.txt
个文件,我想循环加载它们,然后为每个文件分别创建dataframes
。
我已经读过this,但对于我来说,我所有的文件都具有相同的扩展名,我想一个一个地遍历它们,并为每个文件制作dataframe
。
我首先用下面的代码行计数目录中的文件
sc.wholeTextFiles("/path/to/dir/*.txt").count()
但是我不知道该怎么做? 请指导我。
我正在使用Spark 2.3
和Scala
。
谢谢。
答案 0 :(得分:1)
整个纺织品返回一个成对的Rdd函数
def wholeTextFiles(path: String, minPartitions: Int): rdd.RDD[(String, String)]
您可以在rdd上进行映射,rdd的键是文件的路径,值是文件的内容
sc.wholeTextFiles("/path/to/dir/*.txt").take(2)
sc.wholeTextFiles("/path/to/dir/*.txt").map((x,y)=> some logic on x and y )
答案 1 :(得分:0)
您可以使用hadoop fs并获取目录下的文件列表,然后对其进行迭代并保存到其他net数据帧中。
类似以下内容:
// Hadoop FS
val hadoop_fs = FileSystem.get(sc1.hadoopConfiguration)
// Get list of part files
val fs_status = hadoop_fs.listLocatedStatus(new Path(fileFullPath))
while (fs_status.hasNext) {
val fileStatus = fs_status.next.getPath
val filepath = fileStatus.toString
val df = sc1.textFile(filepath)
}