【问题标题】:How check availability of folders before read in Spark?在 Spark 中读取之前如何检查文件夹的可用性?
【发布时间】:2019-06-11 13:50:21
【问题描述】:

我是 Spark 框架的新手,需要一些建议。

我有这样的文件夹结构。

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 会引发错误,表示没有这样的路径。仅当这些文件夹之一可用时,代码才有效。

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

【问题讨论】:

  • 看起来像重复 - 问题的第一部分
  • 该解决方案检查当前服务器中的路径,并且不使用 Spark 进行检查。
  • 您不必使用 spark 进行这些检查,这可以通过不同的方式完成,具体取决于数据来源
  • 这些是本地文件系统路径,还是 HDFS 路径?

标签: java scala apache-spark


【解决方案1】:

我认为可以使用可用于 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 生态系统中不存在文件夹的概念。只有key和value文件系统,key是文件的整个路径,value是文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-31
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    相关资源
    最近更新 更多