HDFS"文件"这是目录

时间:2017-08-10 19:01:51

标签: hadoop pyspark hdfs parquet

背景 - 我们正在尝试将不同的文件类型(csv或镶木地板)读入pyspark,我的任务是编写一个确定文件类型的程序。

镶木地板文件似乎总是目录,镶木地板文件在HDFS中显示为目录。

我们有一些csv文件也是目录,其中文件名是目录名,目录包含多个部分文件。这是什么过程?

为什么有些文件 - '文件'和一些文件'目录'?

2 个答案:

答案 0 :(得分:0)

这取决于生成这些文件的过程。例如,当MapReduce生成输出时,它总是生成一个目录,然后在该目录中为每个reducer创建一个输出文件。这样做是为了使每个reducer可以独立创建其输出。

从Spark的CSV package判断,它希望输出到一个文件。因此,可能是Spark生成单文件CSV,MapReduce生成目录。

为尽可能通用,最好执行以下操作:检查相关文件是否为目录。如果没有,请检查扩展名。如果是,请查看目录中文件的扩展名。这适用于您的每种情况。

请注意,某些输入格式(例如MapReduce输入格式)接受目录作为输入,而某些(例如Spark textFile)只会接受文件/团体文件。您需要了解您正在与之交互的库所期望的内容。

答案 1 :(得分:0)

  

硬盘上的所有数据都包含文件和文件夹。该   两者之间的基本区别在于文件存储数据的同时   文件夹存储文件和其他文件夹。

Hadoop执行引擎通常根据使用的reducer或executors的数量创建一个目录并将多个部分文件写为输出。

当您输出多个文件 abc.csv 时,并不意味着它的单个文件包含数据。它只是MapReduce(通常)解释为要创建的新目录的输出位置,在该目​​录中它创建输出文件(部分文件)。 如果您在编写文件时使用Spark(可能使用.saveAsTextFile),则可能只创建一个文件。