博客
关于我
TF-IDF mapreduce实现
阅读量:350 次
发布时间:2019-03-04

本文共 2033 字,大约阅读时间需要 6 分钟。

Hadoop TF-IDF 实验文档

前言

在编写过程中,我对代码进行了多次修改,可能导致前后内容不完全一致。请以最终发布的版本为准。


文章目录

1. 项目概述

2. TF Mapper

3. Combiner

4. Partitioner

5. Reducer

6. MAIN 函数

7. TF 测试

8. IDF Mapper

9. Combiner

10. Partitioner

11. Reducer

12. MAIN 函数

13. TF-IDF 测试

14. Client

15. POM 文件

16. 常见问题


1. 项目概述

这是一个基于 Hadoop 的文本处理项目,主要完成两个功能:

  • 文本频率(TF)计算-逆文本频率(IDF)计算
  • 结合 TF-IDF 进行文本排名

2. TF Mapper

功能描述

  • 输入:key(当前行偏移位置),value(当前行内容)
  • 输出:key(word:workname),value(TF 值,填充值为 1)
  • 实现:使用 Tokenizer 对行内容进行词语分割,输出格式为 word:workname,value 为 1。

3. Combiner

功能描述

  • 对相同 key 的值进行合并,将每个 word 在文档中的 TF 值统计总和。
  • Hadoop 文档指出,Combiner 不一定会运行,具体取决于 Map 和 Reducer 的输出。

4. Partitioner

功能描述

  • 根据 word 的 hash 值对数据进行分区,确保每个 Reducer 处理的数据量相等。
  • 默认分区数为 1,可以根据需要设置。

5. Reducer

功能描述

  • 输入:key(word:workname),value(TF 值)
  • 输出:key(word:workname),value(TF 值总和)
  • 实现:将所有 Reducer 的输出合并,输出总 TF 值。

6. MAIN 函数

功能描述

  • 设置工作名称、Mapper、Combiner、Partitioner、Reducer 类型。
  • 指定输入输出路径,确保输出目录不存在。

7. TF 测试

测试步骤

  • 创建 HDFS 目录:
    hadoop fs -mkdir /test-in
  • 复制测试文件:
    hadoop dfs -copyFromLocal /home/xjm/class3_spring/big-data/workspace/little /test-in
  • 查看文件是否复制成功:
    hadoop fs -ls /test-in
  • 运行测试:
    hadoop jar TF-IDF-1.0-SNAPSHOT.jar /test-in /test-out
  • 查看输出结果:
    hadoop fs -ls /test-out
    hadoop fs -cat /test-out/part-r-00000

  • 8. IDF Mapper

    功能描述

    • 输入:key(当前行偏移位置),value(当前行内容)
    • 输出:key(word),value(1)
    • 实现:直接输出 word 值。

    9. Combiner

    功能描述

    • 将相同 key 的值合并,确保每个 word 在文档中只有一条记录。
    • 输出:key(word),value(1)。

    10. Partitioner

    功能描述

    • 根据 word 的 hash 值对数据进行分区。
    • 默认分区数为 1,可以根据需要设置。

    11. Reducer

    功能描述

    • 输入:key(word),value(IDF 值)
    • 输出:key(word),value(IDF 值)
    • 实现:对每个 word 的 IDF 值进行计算。

    12. MAIN 函数

    功能描述

    • 设置工作名称、Mapper、Combiner、Partitioner、Reducer 类型。
    • 计算文档总数并加入设置。
    • 指定输入输出路径,确保输出目录不存在。

    13. TF-IDF 测试

    测试步骤

  • 运行测试:
    hadoop jar TF-IDF-1.0-SNAPSHOT.jar /test-in /test-outIDF
  • 查看输出结果:
    hadoop fs -ls /test-outIDF
    hadoop fs -cat /test-outIDF/part-r-00000

  • 14. Client

    功能描述

    • 启动客户端运行所有任务。
    • 自动删除已存在的输出目录。

    15. POM 文件

    描述

    • 包含项目依赖、编译配置和入口类设置。
    • 主要依赖项包括 Hadoop 和相关组件。

    16. 常见问题

    1. 导入错误

    • pom 文件中添加 Hadoop 依赖。
    • 手动添加 Hadoop jar 包到 classpath。

    2. 运行超时

    • 检查 Hadoop 集群状态。
    • 确保节点健康,删除不健康节点。

    3. 等待 AM 容器

    • 确保集群资源足够。

    通过以上内容,读者可以完整了解项目实现、测试步骤及常见问题解决方法。

    转载地址:http://kumq.baihongyu.com/

    你可能感兴趣的文章
    OpenCV与AI深度学习 | 如何在 Docker 容器中使用 GPU
    查看>>
    OpenCV与AI深度学习 | 实战 | OpenCV中更稳更快的找圆方法--EdgeDrawing使用演示(详细步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | OpenCV传统方法实现密集圆形分割与计数(详细步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | OpenCV实现扫描文本矫正应用与实现详解(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | YOLO11自定义数据集训练实现缺陷检测 (标注+训练+预测 保姆级教程)
    查看>>
    OpenCV与AI深度学习 | 实战 | YOLOv10模型微调检测肾结石并提高准确率
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用OpenCV和Streamlit搭建虚拟化妆应用程序(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用OpenCV确定对象的方向(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用YOLOv8 Pose实现瑜伽姿势识别
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用YoloV8实例分割识别猪的姿态(含数据集)
    查看>>
    OpenCV与AI深度学习 | 实战 | 使用姿态估计算法构建简单的健身训练辅助应用程序
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于OpenCV和K-Means聚类实现颜色分割(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于YoloV5和Mask RCNN实现汽车表面划痕检测(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于YOLOv9+SAM实现动态目标检测和分割(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 基于YOLOv9和OpenCV实现车辆跟踪计数(步骤 + 源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 文本图片去水印--同时保持文本原始色彩(附源码)
    查看>>
    OpenCV与AI深度学习 | 实战 | 通过微调SegFormer改进车道检测效果(数据集 + 源码)
    查看>>
    OpenCV与AI深度学习 | 实战—使用YOLOv8图像分割实现路面坑洞检测(步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战篇——基于YOLOv8和OpenCV实现车速检测(详细步骤 + 代码)
    查看>>
    OpenCV与AI深度学习 | 实战|OpenCV实时弯道检测(详细步骤+源码)
    查看>>