如何在hadoop中跳过几行大文件到新文件?



我想跳过hdfs文件的前36行,并复制到hdfs的另一个位置。对于相同的

,是否有类似于head/tail的命令?

很简单,没有一行代码可以做到这一点。Hadoop中的文件可能非常庞大,因此没有CLI工具来执行基本操作,因为计算引擎与HDFS解耦了。你最好的选择——取决于你的集群是如何设置的——是一个简单的MapReduce作业(看看Python单词计数的例子)或者一个Spark作业。

你可以在Spark中实现一个变通方案:

  1. 按文件读取文件:

    val df = spark.read.csv("file1.csv"

  2. 包括每行的行号:

    df.withColumn("row_id"monotonically_increasing_id ())

  3. 过滤前36行并将文件写入另一个位置:

    df.filter(!坳("row_id"。Isin (1 ~ 36)).drop("row_id").write.save("destination-path")

根据Ben的建议,我可以使用spark作业来完成,并根据正确的标志

排除那些行。

最新更新