linux命令实现词频统计


问题

给定示例文件test.txt如下,对第一列做词频统计并排序 。

hello marry
max thread
hello lihua
max apple
max code
nasa connection

解答

切割->分组->排序,cat test.txt | cut -d ' ' -f1 | sort | uniq -c | sort -k 1

      1 nasa
      2 hello
      3 max

注意:上面在分组前进行一次sort操作并不是多余的,假如不sort,uniq只会对相邻相同的单词分组。


拓展

获取不重复的word个数

cat test.txt | cut -d ' ' -f1 | sort | uniq -c | wc -l

3

大数据环境

上述的wordcount在海量数据情况下适用吗?答:并不适用。因为sort命令采用了归并排序,排序时候的临时小文件是默认放在/tmp路径下的,有时候/tmp的空间有限制,比如4G,那么,超过4G的文件就没有办法用sort了。当然也可以用sort -T Path 来临时文件的目录。见参考博文1。


参考

[1] 大数据量下的sort-linux

要使用Hadoop实现词频统计,需要按照以下步骤进行操作: 1. 首先,将Java应用程序打包生成JAR包,并将其部署到Hadoop平台上的指定目录。例如,将词频统计程序放在"/usr/local/hadoop/myapp"目录下。如果该目录不存在,可以使用如下命令创建: ``` cd /usr/local/hadoop mkdir myapp ``` 2. 然后,将需要统计词频的文本文件移动到Hadoop目录下。可以使用`mv`命令将文件移动,或者直接在Hadoop路径下使用`vim`命令创建一个新的文本文件,并将需要统计词频的例子放入其中。假设文本文件名为"wordfile1.txt",执行以下命令将文件放到HDFS上: ``` ./bin/hdfs dfs -put ./wordfile1.txt input ``` 3. 接下来,在Linux系统中使用`hadoop jar`命令来运行词频统计程序。命令如下所示: ``` ./bin/hadoop jar ./myapp/WordCount.jar input output ``` 这样,程序将会运行并统计输入文件中每个单词的频率。统计结果将会被写入HDFS的"/user/hadoop/output"目录中。您可以使用以下命令查看词频统计结果: ``` ./bin/hdfs dfs -cat output/* ``` 以上就是使用Hadoop实现词频统计的步骤。请确保您已经正确设置了Hadoop环境,并按照上述步骤进行操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Hadoop词频统计](https://blog.csdn.net/weixin_49670340/article/details/122145331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值