在读Spark之前如何检查文件夹的可用性?

时间:2019-01-17 11:09:54

标签: java scala apache-spark

我是 Spark Framework 的新手,并且需要一些建议。

我有这样的文件夹结构。

reports
 - 20180101
 - 20180102
 - 20180103
   - GHWEI.csv
   - DSFSD.csv
   - GHWEI.csv

报告(csv文件)每天分别存储。例如20180103文件夹收集2018年1月3日的所有报告。

在读取csv文件之前,我需要检查路径的可用性。怎么做?

val reports = spark.read.option("delimiter", "|")
              .csv("/reports/{20180101,20180102,20180103,}/*GHWEI*")
              .orderBy("CREATE_DATE")

现在,如果没有名为201801012018010220180103的文件夹,Spark引发错误,表明没有这样的路径。仅当这些文件夹之一可用时,代码才有效。

第二个问题是如何检查读取后报告的值是否为空?

1 个答案:

答案 0 :(得分:0)

我认为可以使用可在Scala程序上使用的Hadoop FileSystem java sdk检查文件。

这是整个文档:https://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/FileSystem.html

我将您链接到可以适应您的情况的答案: https://stackoverflow.com/a/30408153/10623105

注意:澄清一下,Hadoop不适用于该文件夹。文件夹的概念在Hadoop生态系统上不存在。只是键和值文件系统,其中键是文件的整个路径,值是文件。