gpt4 book ai didi

scala - Spark - 从具有嵌套文件夹的目录中获取特定数据类型的所有文件名

转载 作者:行者123 更新时间:2023-12-01 12:57:14 26 4
gpt4 key购买 nike

我有一个目录,其中包含一些子文件夹,其中包含不同的 Parquet 文件。像这样的事情:

2017-09-05
10-00
part00000.parquet
part00001.parquet
11-00
part00000.parquet
part00001.parquet
12-00
part00000.parquet
part00001.parquet

我想要的是通过传递目录 05-09 的路径来获取所有 parquet 文件的名称列表。

我能够实现它,但效率非常低:

 val allParquetFiles = sc.wholeTextFiles("C:/MyDocs/2017-09-05/*/*.parquet")
allParquetFiles.keys.foreach((k) => println("The path to the file is: "+k))

所以每个键都是我正在寻找的名称,但是这个过程还要求我加载所有文件,然后我就无法使用它们,因为我以二进制形式获取它们(而且我不知道如何转换它们进入数据框)。

一旦我有了 key (即文件路径列表),我计划调用:

val myParquetDF = sqlContext.read.parquet(filePath);

正如您可能已经了解的那样,我对 Spark 还很陌生。因此,如果有更快或更简单的方法来读取位于不同文件夹中的 Parquet 文件列表,请告诉我。

我的部分解决方案:我无法获取文件夹中所有文件名的所有路径,但我能够将该类型的所有文件的内容获取到同一数据帧中。这是我的最终目标。如果将来有人需要它,我使用了以下行:

val df = sqlContext.read.parquet("C:/MyDocs/2017-05-09/*/*.parquet") 

感谢您的宝贵时间

最佳答案

你可以像这样使用 hdfs api 来做到这一点

import org.apache.hadoop.fs._
import org.apache.hadoop.conf._
val fs = FileSystem.get(new Configuration())
val files = ( fs.listStatus(new Path("C:/MyDocs/2017-09-05/*/*.parquet")) ).map(_.getPath.toString)

关于scala - Spark - 从具有嵌套文件夹的目录中获取特定数据类型的所有文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46052926/

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