我在Scala中使用谷歌存储和Zeppelin,我可以使用下一个查询加载所有json文件。
sqlContext.read.json("gs://myBucket/*/jsonfile.json")
我的数据被结构化为小块,每个块在myBucket
中都有自己的文件夹。在chunk文件夹中,我得到了与该chunk 相关的文件
- jsonfile.json
- 其他数据.data
- moreJsons.json
我想获得我所有的文件夹路径,然后在不同的进程/任务中处理。。。所以我可以做一些类似的事情:
if(isJson){
sqlContext.read.json("gs://myBucket/chunkId/jsonfile.json")
}
在这个例子中,我知道通道路径:chunkId
,并且,我得到了"isJson"的一些内部逻辑。
所以这就是我需要的(我希望它有多清楚…),我的问题是:如何在不阅读文件内容的情况下获得文件夹列表
Spark没有用于列出文件的内置机制。你可以使用任何你想做的机制。例如,如果Google Storage是通过Hadoop文件系统映射的,则可以使用Hadoop API。使用您的集群来实现快速广度优先的文件遍历,例如,下面这样的东西,我们在Swoop中使用它来执行快速临时任务。
使用Spark和Hadoop文件系统API的分布式文件列表