唐诗三百首出现最多的字是什么?大数据分析告诉你

2023-11-13

一个人要是长时间一直做一件事,思维容易固化。

就像那些从太空回来的宇航员,吃饭时容易丢开拿在手里的勺子。当勺子掉在地上时,哦,我已经回到地球了^_^。

所以,适当尝试新鲜事物,既是对大脑的放松,也是开阔思路的好机会,好方法。

那这次,博主尝试的新事物是什么呢?我们知道,大、物、移、智、云是近些年比较火的技术,具体来讲就是大数据、物联网、移动5G、人工智能、云计算。每一个都显得高大上。

所以,博主决定在其中选择一个来学习学习。其实,这些技术并不是割裂的,而是有内在的本质联系的,具体可参考博主的另一篇博文

一文将大数据、云计算、物联网、5G(移动网)、人工智能等最新技术串起来_wwwyuewww的专栏-CSDN博客

那么,选择哪一个方向来尝试一下呢?

这不,一年一度的诗词大会又开始了。

 

现在人工智能技术非常火,很多人就想着,要是让AI来写诗,会是什么样的。还有人真的做了这件事。

这里,博主就不尝试那么复杂的了,能力和时间都不允许。我们来个简单的,选择大数据方向,来分析分析唐诗三百首里,各个汉字出现的频率。

需要补充说明一下,就唐诗三百首而言,说实话,还不至于用大数据技术,简单写个程序就可以搞定。但是,如果有更多的数据,那么使用大数据技术,还是可以提升效率的。

好了,闲话少说,我们简单看看怎么做。我们使用Hadoop完成数据分析。

整个过程分为三个部分

第一部分 先作为分布式文件系统来使用

1 下载安装Hadoop。这里,我用了老版本2.8
  因为Hadoop依赖Java,需要准备Java环境,导出Java环境变量

  解压Hadoop安装包,然后在/etc/profile文件中导出Hadoop环境变量

  同时,在Hadoop env中也导出Java环境变量

2 按照官方示例,格式化分布式文件系统,启动HDFS

Hadoop namenode -format
hdfs namenode -format

上述两个命令都可以,不过后续都推荐第二个命令
关停之前的服务
stop dfs  和yarn 
  
重启服务
start dfs 和 yarn
使用jps命令查看java进程
23232 Jps
20977 ResourceManager
20373 NameNode
20806 SecondaryNameNode
21147 NodeManager
20571 DataNode

  为啥要查看java进程呢,因为一个基本的Hadoop集群中的节点主要有:
  NameNode:负责协调集群中的数据存储
  DataNode:存储被拆分的数据块
  JobTracker:协调数据计算任务
  TaskTracker:负责执行由JobTracker指派的任务
  SecondaryNameNode:帮助NameNode收集文件系统运行的状态信息

  要确定上述关键节点进程成功运行,否则,不利于后续错误的排除判断:倒地是程序问题还是环境问题。所以,最好检查一下。
  
  实际中,发现缺少DataNode,将java JDK版本从10切换到8

  删除/root/hadoop目录下的日志和临时文件(目录由配置文件中指定),重新启动服务,问题解决

  但也有说《重新格式化名称节点之前需要清空DFS下的名称和数据文件夹以解决数据节点无法启动的问题。》可能不是JDK版本的问题
  
  相对之前输出,也没有an illegal错误提示了,这个应该是java版本的原因

  但是还是仍然有如下错误

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

  其实把native目录下的库拷贝到上一层lib目录下,即可通过检测

  但是会提示snappy库没有,这个需要下载源代码,编译安装

3 用命令方式,测试HDFS文件系统

查看目录
Hadoop fs -ls /
创建一个新的目录,创建后可以在web界面查看当前操作的结果。web界面的端口为50070
hdfs dfs -mkdir /user

  对于文件系统操作命令,可以用Hadoop fs 和hdfs dfs两个命令,根据网上资料,第一个命令可以操作更多格式的文件系统,不止hdfs文件系统
  
  命令的基本使用可以这样理解,将Hadoop fs看做一个整体,带选项,比如 -ls -mkdir等,然后指定操作目录即可。

  注意,这里的目录是针对的hdfs分布式文件系统,不是电脑本地目录

本地和hdfs文件系统中文件相互拷贝命令选项如下:
[-copyFromLocal [-f] [-p] [-l] [-d] <localsrc> ... <dst>]
[-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] <src> ... <localdst>]

第二部分,作为数据分析平台使用

4 执行一个MapReduce任务

  创建一个input 和output 文件目录
  将Hadoop配置文件拷贝到input目录,作为分析的源文件
  执行grep 任务

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar grep /user/input /user/output 'dfs[a-z.]+'

  提示无法连接8032端口
  
  修改yarn的配置文件,增加如下内容,

<property>  
  <name>yarn.resourcemanager.address</name>  
  <value>master:8032</value>  
</property>  
<property>  
  <name>yarn.resourcemanager.scheduler.address</name>  
  <value>master:8030</value>  
</property>  
<property>  
  <name>yarn.resourcemanager.resource-tracker.address</name>  
  <value>master:8031</value>  
</property>

  提示无法连接master:8032,意思貌似无法解析该地址
  修改配置文件,将master替换为localhost
  再次执行任务,提示
  mapreduce.Job: Task Id : attempt_1578829933099_0001_m_000005_0, Status : FAILED
  
  该问题同样在java版本退回到JDK8后未再出现,map-reduce任务通过。之前许多错误可能是java版本不兼容导致。
  
  通过8088端口可以查看这类任务的执行情况及执行日志
  
  第一次执行提示output目录已存在错误,修改为

hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.5.jar grep /user/input /user/output/grepresult 'dfs[a-z.]+'

  执行成功。将执行结果拷贝到本地

hdfs dfs -copyToLocal /user/output/ test/

  查看本地中的执行结果,跟在本地单独执行命令检查,结果基本一致

root@ubuntu:/home/work/hadoop-2.8.5/test/output/grepresult# cat part-r-00000 
  1       dfs.replication
  1       dfs.permissions
  1       dfs.name.dir
  1       dfs.data.dir

  本地单独命令执行结果

root@ubuntu:/home/work/hadoop-2.8.5/etc/hadoop# cat hdfs-site.xml | grep dfs[a-z.]
  <name>dfs.name.dir</name>
  <name>dfs.data.dir</name>
  <name>dfs.replication</name>
  <name>dfs.permissions</name>

第三部分,通过Java编程,使用Hadoop提供的接口,执行MapReduce任务,完成古诗分析

5 编写MapReduce任务,分析古诗

  现在可以编写程序,来进行分析统计了。程序很简单,读入古诗的每一个字符,然后统计它们出现的频率。

  我们使用Windows环境的idea来编辑和编译Java库。

  参考网上的例子,主要有三个文件,分别是WordCountDriver.java,WordCountMapper.java以及WordCountReducer.java。


  第一个是框架文件,将后两个管理起来,第二是做Map操作,第三个是做Reduce操作。

  具体统计操作写的很简陋,没有做过多的处理。

  最后编译生成一个jar库HadoopApi.jar。
  
6 上传待分析古诗文件

  我们将从网络下载的含有唐诗三百首的文本文件传到HDFS中。古诗格式如下图所示。


7 执行分析程序,进行分析

hadoop jar /home/share/com/HadoopApi.jar com.xxx.hadoop.Test.WordCountDriver

8 将分析结果从Hadoop的分布式文件系统中拷贝出来

  分析结果是一个文本文件,打开可以看到如下图所示


  
  如前所述,这里没有对结果排序。所以,对这个数据,还需要再处理一次。

  我们将数据拷贝到Excel中,进行一下排序,结果就出来了,如下图所示:

  
  可以看到,最高频字是“不”,其次是“人”,再次是“山”。有没有出乎你的意料?

  如果我们统计所有的古诗,就可以得到古人写诗最喜欢用的字了。
  
后记:

不得不说,兴趣才是最好的老师。当你想要做感兴趣的事情时,主动学习就不是什么困难的事情了。
  
 
  

 

 

 

 

 

 


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

唐诗三百首出现最多的字是什么?大数据分析告诉你 的相关文章

  • http://localhost:50070/ 的 hadoop Web UI 不起作用

    命令 jps 显示以下详细信息 第5144章 5464 节点管理器 5307 资源管理器 5800 Jps 显然namenode和datanode丢失了 网络用户界面位于http 本地主机 50070 http localhost 5007
  • Oozie SSH 操作

    Oozie SSH 操作问题 Issue 我们正在尝试在集群的特定主机上运行一些命令 我们为此选择了 SSH Action 我们面对这个 SSH 问题已经有一段时间了 这里真正的问题可能是什么 请指出解决方案 logs AUTH FAILE
  • R+Hadoop:如何从HDFS读取CSV文件并执行mapreduce?

    在以下示例中 small ints to dfs 1 1000 mapreduce input small ints map function k v cbind v v 2 MapReduce函数的数据输入是一个名为small ints的
  • 遍历 ArrayWritable - NoSuchMethodException

    我刚刚开始使用 MapReduce 并且遇到了一个奇怪的错误 我无法通过 Google 回答该错误 我正在使用 ArrayWritable 制作一个基本程序 但是当我运行它时 在Reduce过程中出现以下错误 java lang Runti
  • hadoop中reducer的数量

    我正在学习hadoop 我发现减速器的数量非常令人困惑 1 reducer的数量与partition的数量相同 2 reducer 的数量是 0 95 或 1 75 乘以 节点数 每个节点的最大容器数 3 减速机数量设定为mapred re
  • 如何通过Python访问Hive?

    https cwiki apache org confluence display Hive HiveClient HiveClient Python https cwiki apache org confluence display Hi
  • hive 从两个数组创建映射或键/值对

    我有两个具有相同数量值的数组 它们映射为 1 1 我需要从这两个数组创建一个键 值对或映射 键 值 任何想法或提示都会有帮助 当前表结构 USA WEST NUMBER Street City 135 Pacific Irvine USA
  • Spark 在 WholeTextFiles 上创建的分区少于 minPartitions 参数

    我有一个文件夹 里面有 14 个文件 我在一个集群上使用 10 个执行器运行 Spark Submit 该集群的资源管理器为 YARN 我创建了我的第一个 RDD 如下所示 JavaPairRDD
  • InvalidRequestException(为什么:empid 如果包含 Equal,则不能被多个关系限制)

    这是关于我从 Apache Spark 查询 Cassandra 时遇到的问题 Spark 的正常查询工作正常 没有任何问题 但是当我使用关键条件进行查询时 出现以下错误 最初 我尝试查询复合键列族 它也给出了与下面相同的问题 由以下原因引
  • hive - 在值范围之间将一行拆分为多行

    我在下面有一张表 想按从开始列到结束列的范围拆分行 即 id 和 value 应该对开始和结束之间的每个值重复 包括两者 id value start end 1 5 1 4 2 8 5 9 所需输出 id value current
  • 使用 PyArrow 从 HDFS 读取镶木地板文件

    我知道我可以使用 pyarrow 连接到 HDFS 集群pyarrow hdfs connect 我也知道我可以使用读取镶木地板文件pyarrow parquet s read table 然而 read table 接受文件路径 而hdf
  • 处理 oozie 工作流程中的循环

    我有一个 oozie 用例 用于检查输入数据可用性并根据数据可用性触发 MapReduce 作业 所以我编写了一个 shell 脚本来检查输入数据 并在 oozie 中为其创建了一个 ssh 操作 输入数据检查的重试次数和重试间隔应该是可配
  • Flume将数据从MySQL迁移到Hadoop

    请分享您的想法 需求是将MySQL db中的数据迁移到Hadoop HBase进行分析 数据应该实时或接近实时地迁移 Flume可以支持这个吗 有什么更好的方法 据我了解 Flume 并不是为此而设计的 Flume 基本上用于读取日志 如数
  • Apache hadoop 版本 2.0 与 0.23

    Hadoop 的版本和发行版太多 让我很困惑 我有几个问题 Apache Hadoop 1 x 是从 0 20 205 开始的 Apache Hadoop 2 0 是从 0 22 还是 0 23 开始 根据这个blogpost http b
  • 从 HDFS 传出文件

    我想将文件从 HDFS 传输到另一台服务器的本地文件系统 该服务器不在 hadoop 集群中 而是在网络中 我本可以这样做 hadoop fs copyToLocal
  • 如何找到 JAR:/home/hadoop/contrib/streaming/hadoop-streaming.jar

    我正在练习有关 Amazon EMR 的复数视角视频教程 我被困住了 因为我收到此错误而无法继续 Not a valid JAR home hadoop contrib streaming hadoop streaming jar 请注意
  • 无法验证 serde:org.openx.data.jsonserde.jsonserde

    我编写了这个查询来在配置单元上创建一个表 我的数据最初是 json 格式 所以我已经下载并构建了 serde 并添加了它运行所需的所有 jar 但我收到以下错误 FAILED Execution Error return code 1 fr
  • Sqoop 导出分区的 Hive 表

    我在尝试导出分区的 Hive 表时遇到了一些问题 这是否完全受支持 我尝试用谷歌搜索并找到一张 JIRA 票证 sqoop export connect jdbc mysql localhost testdb table sales exp
  • Hadoop 上的 Sqoop:NoSuchMethodError:com.google.common.base.Stopwatch.createStarted() [重复]

    这个问题在这里已经有答案了 我在 Google Cloud DataProc 上的 hadoop 上运行 sqoop 以通过 Cloud SQL 代理访问 postgresql 但遇到 Java 依赖项错误 INFO First Cloud
  • 将 Spark 添加到 Oozie 共享库

    默认情况下 Oozie 共享 lib 目录提供 Hive Pig 和 Map Reduce 的库 如果我想在 Oozie 上运行 Spark 作业 最好将 Spark lib jar 添加到 Oozie 的共享库 而不是将它们复制到应用程序

随机推荐

  • Leptonica在VS2010中的编译及简单使用举例

    在tesseract ocr中会用到leptonica库 这里对leptonica简单介绍下 Leptonica是一个开源的图像处理和图像分析库 它的license是BSD 2 clause 它主要包括的操作有 位图操作 仿射变换 形态学操
  • chatgpt输出长度有限制,如何解决

    如果您想要在 ChatGPT 中输出更长的文本 可以考虑使用多次调用API 将结果进行拼接 您可以根据需要分割您的文本 分成多个部分 并且每次调用API时 将前一个调用的结果中的最后一句话作为下一个调用的输入 这样就可以将多次调用的结果进行
  • 记录下Charles 抓包tiktok遇到的坑,以及调查关于 SSL unpinning 中增长的皮毛知识

    由于之前用Charles 抓包浏览器请求很容易 于是觉得抓手机的包应该也不难 没想到迎来了目前我程序员生涯的最大的一次挑战 妈呀 完全出圈了呀 遇到知识盲区了 一大堆我名词搞得头都大了 记录一下吧 毕竟不长遇到 首先 先记录下调查过程中比较
  • 互联网大厂面试题之深入剖析TCP三次握手

    1 为什么要学习 市场动向分析 市场背景 对于这几年的互联网市场 越来越多的市场需求导致人才输出渠道更加丰富 五花八门的教育机构培训班 学校对互联网人才的培养同样会显得越来越重视 问题分析 那么 越来越多的人才的出现必将给我们学员带来更大的
  • 我们的微服务架构及Spring Cloud各个组件的概要

    初识spring cloud 我们目前的架构 我们将来的架构 什么是Spring Boot Spring Boot简化了基于Spring的应用开发 通过少量的代码就能创建一个独立的 产品级别的Spring应用 Spring Boot为Spr
  • 【Java知识点详解 8】缓存

    Java学习路线推荐 Java基础教程系列 SpringBoot精品推荐 Spring Boot基础教程 简介 Java领域优质创作者 CSDN哪吒公众号作者 Java架构师奋斗者 扫描主页左侧二维码 加入群聊 一起学习 一起进步 欢迎点赞
  • 中国开发者真实现状:40 岁不做开发,算法工程师最稀缺!

    戳蓝字 CSDN云计算 关注我们哦 互联网的 2018 年 注定是不平凡的一年 浩浩荡荡的美国制裁中兴事件唤醒了科技界对芯片产业的重视 倒逼了一系列芯片方面的布局和投资 互联网人口红利不断消耗 推动百度 腾讯 阿里巴巴等科技巨头先后实施战略
  • 常用的几种通信协议

    协议 约定 就比如我们的普通话 网络通信协议 速率 传输码率 代码结构 传输控制 问题大事化小 分层 TCP IP协议簇 重要 TCP 用户传输协议 UDP 用户数据报协议 知名协议 TCP IP 网络互联协议 TCP UDP 对比 TCP
  • SVN 检查修改或者提交代码时候一直显示"please wait"的解决办法(汉化版本显示"请稍候")

    在提交使用vue写的前端代码时候一直显示 请稍候 检查修改时候也是这样显示 原因是 下载代码后 npm install 安装了依赖 可以在SVN中取消对相关依赖的控制 操作方法
  • iscsi使用教程(中)

    服务端管理命令 tgtadm 是一个模式化的命令 其使用格式如下 tgtadm lld driver op operation mode mode OPTION 其中模式 mode 和操作 operation 对应关系如下 模式 操作 ta
  • JAVA经典面试题

    九种基本类型及封装类 基本类型 boolean byte char short int long double void 二进制位数 1 8 一字节 16 2字节 16 2字节 32 4字节 64 8字节 64 8字节 封装器类 Boole
  • sqli-labs通关(less1~less10)

    目录 题外话 Less 1 Less 2 Less 3 Less 4 Less 5 Less 6 Less 7 Less 8 Less 9 Less 10 这10关都是GET型的 包括了union注入 报错注入 布尔盲注和时间盲注 虽然包含
  • 一文读懂MySQL事务:提升你的数据库操作技能

    概述 事务可以保证多个操作原子性 要么全成功 要么全失败 对于数据库来说事务保证批量的DML要么全成功 要么全失败 事务具有四个特征ACID 原子性 Atomicity 整个事务中的所有操作 必须作为一个单元全部完成 或全部取消 一致性 C
  • pytdx接口API说明

    标准行情接口API pytdx hq 下面是如何在程序里面调用本接口 首先需要引入 from pytdx hq import TdxHq API 然后 创建对象 api TdxHq API 之后 通常是如下的格式 if api connec
  • python可以在多种平台运行 这体现了python语言的_Python快速编程入门课后习题答案...

    目录 前言 第一章 一 填空题 二 判断题 三 选择题 第二章 一 填空题 二 判断题 三 选择题 第三章 一 填空题 二 判断题 三 选择题 第四章 一 单选题 二 判断题 三 填空题 第五章 一 选择题 二 判断题 三 填空题 第六章
  • 3_服务容错_保护断路器_@EnableCircuitBreaker和引入@SpringCloudApplication

    前言 前面做了一个简单的服务 注册 服务发现 服务提供者和消费者的项目 现在我们还是准备之前的项目代码 1 服务容错保护 准备的项目工程 1 服务注册中心 端口为1111 2 服务提供者 端口为8080 8081 3 服务消费者 端口为90
  • 华为OD机试真题- 天然蓄水库【2023】【JAVA、Python、C++】

    题目描述 描述 公元2919年 人类终于发现了一颗宜居星球 X星 现想在X星一片连绵起伏的山脉间建一个天热蓄水库 如何选取水库边界 使蓄水量最大 要求 山脉用正整数数组s表示 每个元素代表山脉的高度 选取山脉上两个点作为蓄水库的边界 则边界
  • Springboot连接FISCO-BCOS链

    依赖 FISCO BOCS 2 5 0 JAVA 1 8 Spring Boot 2 0 2 官方文档 前期准备 部署FISCO BOCS 2 5 0 引入SDK
  • ue 清理缓存_mpvue应用之组件数据缓存清理

    题图 被mpvue周期搞疯的你 之前介绍过美团外卖C端 H5 小程序页面大量基于mpvue框架的能力 使用Vue组件打通了原生小程序页面和H5页面的隔阂 再结合小程序自带的原生组件功能 就构成了整个外卖跨端应用的终端部分架构 但是随着页面规
  • 唐诗三百首出现最多的字是什么?大数据分析告诉你

    一个人要是长时间一直做一件事 思维容易固化 就像那些从太空回来的宇航员 吃饭时容易丢开拿在手里的勺子 当勺子掉在地上时 哦 我已经回到地球了 所以 适当尝试新鲜事物 既是对大脑的放松 也是开阔思路的好机会 好方法 那这次 博主尝试的新事物是