获取几行HDFS数据

Unm*_*eni 15 hadoop hdfs

2 GB在我的数据中有数据HDFS.

是否可以随机获取数据.就像我们在Unix命令行中所做的那样

cat iris2.csv |head -n 50
Run Code Online (Sandbox Code Playgroud)

Via*_*nov 34

本土

hadoop fs -cat /your/file | head
Run Code Online (Sandbox Code Playgroud)

这里效率很高,因为只要头部读完所有线条,猫就会关闭溪流.

为了获得尾部,hadoop中有一个特殊的有效命令:

hadoop fs -tail /your/file
Run Code Online (Sandbox Code Playgroud)

不幸的是,它返回数据的最后一千字节,而不是给定数量的行.


Piy*_*tel 8

您也可以在 Hadoop 中使用 head 命令!语法是

hdfs dfs -cat <hdfs_filename> | head -n 3
Run Code Online (Sandbox Code Playgroud)

这将只打印文件中的三行。


Kar*_*pur 5

Linux上的headtail命令分别显示前10行和后10行.但是,这两个命令的输出不是随机采样的,它们的顺序与文件本身的顺序相同.

Linux shuffle - shuf命令帮助我们生成输入行的随机排列,并将其与Hadoop命令结合使用会有所帮助,如下所示:

$ hadoop fs -cat <file_path_on_hdfs> | shuf -n <N>

因此,在这种情况下,如果iris2.csv是HDFS上的文件,并且您希望从数据集中随机抽样50行:

$ hadoop fs -cat /file_path_on_hdfs/iris2.csv | shuf -n 50

注意:sort也可以使用Linux 命令,但shuf命令更快,并且可以更好地随机采样数据.