获取几行hdfs数据

xkftehaa  于 2021-06-04  发布在  Hadoop
关注(0)|答案(9)|浏览(366)

我正在吃晚饭 2 GB 我的数据库中的数据 HDFS .
有没有可能随机得到这些数据。就像在unix命令行中一样

cat iris2.csv |head -n 50
izj3ouym

izj3ouym1#

编写此命令

sudo -u hdfs hdfs dfs -cat "path of csv file" |head -n 50

50为行数(用户可根据需要定制)

gcmastyq

gcmastyq2#

这个 head 以及 tail linux上的命令分别显示前10行和后10行。但是,这两个命令的输出不是随机采样的,它们的顺序与文件本身相同。
linux洗牌- 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 注:linux sort 也可以使用命令,但是 shuf 命令更快,随机采样数据更好。

enxuqcxy

enxuqcxy3#

hadoop fs -cat  /user/hive/warehouse/vamshi_customers/* |tail

我认为头部部分是按照@viacheslav rodionov发布的答案工作的很好,但对于尾部部分,我发布的一个工作的很好。

9gm1akwq

9gm1akwq4#

本地头

hadoop fs -cat /your/file | head

在这里是有效的,因为猫将关闭流一旦头部将完成阅读所有的行。
为了获得尾部,hadoop中有一个特别有效的命令:

hadoop fs -tail /your/file

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

7lrncoxx

7lrncoxx5#

我对hdfs集群上的avro文件使用tail和cat,但是结果没有以正确的编码打印出来。我试过这个,效果很好。

hdfs dfs -text hdfs://<path_of_directory>/part-m-00000.avro | head -n 1

将1更改为更高的整数以从avro文件打印更多样本。

gywdnpxw

gywdnpxw6#

工作代码:

hadoop fs -cat /tmp/a/b/20200630.xls | head -n 10

hadoop fs -cat /tmp/a/b/20200630.xls | tail -3
pokxtpni

pokxtpni7#

你也可以在hadoop中使用head命令!语法应该是

hdfs dfs -cat <hdfs_filename> | head -n 3

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

rn0zuynd

rn0zuynd8#

我的建议是将数据加载到配置单元表中,然后可以执行以下操作:

SELECT column1, column2 FROM (
    SELECT iris2.column1, iris2.column2, rand() AS r
    FROM iris2
    ORDER BY r
) t
LIMIT 50;

编辑:这是该查询的更简单版本:

SELECT iris2.column1, iris2.column2
FROM iris2
ORDER BY rand()
LIMIT 50;
ukdjmx9f

ukdjmx9f9#

hdfs dfs -cat yourFile | shuf -n <number_of_line>

将为你做的把戏。虽然它不适用于mac os。您可以安装gnu coreutils。

相关问题