我想跳过hdfs文件的前36行,并复制到hdfs的另一个位置。对于相同的
,是否有类似于head/tail的命令?很简单,没有一行代码可以做到这一点。Hadoop中的文件可能非常庞大,因此没有CLI工具来执行基本操作,因为计算引擎与HDFS解耦了。你最好的选择——取决于你的集群是如何设置的——是一个简单的MapReduce作业(看看Python单词计数的例子)或者一个Spark作业。
你可以在Spark中实现一个变通方案:
-
按文件读取文件:
val df = spark.read.csv("file1.csv"
-
包括每行的行号:
df.withColumn("row_id"monotonically_increasing_id ())
-
过滤前36行并将文件写入另一个位置:
df.filter(!坳("row_id"。Isin (1 ~ 36)).drop("row_id").write.save("destination-path")
根据Ben的建议,我可以使用spark作业来完成,并根据正确的标志
排除那些行。