Hadoop Streaming 使用 Python + NLTK 进行大数据分词心得

Hadoop Streaming 就是使用 hadoop jar命令 调用streaming jar包进行MR. 通过标准输入和标准输出进行交互. 脚本语言如python会从标准输入中读, 向标准输入中写.

hadoop jar 命令有两种类型的参数, generic options 和 command options. 在格式上 必须先写generic options. 

以下英文转自:https://hadoop.apache.org/docs/r1.2.1/streaming.html

bin/hadoop command [genericOptions] [streamingOptions]

The Hadoop generic command options you can use with streaming are listed here:

ParameterOptional/RequiredDescription
-conf configuration_fileOptionalSpecify an application configuration file
-D property=valueOptionalUse value for given property
-fs host:port or localOptionalSpecify a namenode
-jt host:port or localOptionalSpecify a job tracker
-filesOptionalSpecify comma-separated files to be copied to the Map/Reduce cluster
-libjarsOptionalSpecify comma-separated jar files to include in the classpath
-archivesOptionalSpecify comma-separated archives to be unarchived on the compute machines

给一个我自己的例子:

hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.8.0.jar \
	-files /home/uname/PycharmProjects/untitled/pExtract/p_mapper.py,/home/uname/PycharmProjects/untitled/pExtract/p_reducer.py,hdfs://127.0.0.1:9000/output/part-00000 \
	-D mapred.map.tasks=7 \
	-D mapred.reduce.tasks=3 \
	-input /input/casetext_LF.txt \
	-output /p/above2000 \
	-mapper "python p_mapper.py" \
	-reducer "p_reducer.py"

-files参数: 指定要放到hadoop分布式缓存的文件, 用逗号分开. 可以指向hdfs中的文件, 在脚本调用的时候只要写文件名就可以了, 不必写全路径

-mapper -reducer参数: 指定脚本, 在上面这个例子里, mapper用的是命令形式, reducer直接填了文件名. 如果直接填文件名的话,脚本头上要加环境信息, 比如python就要加:  #!/usr/bin/env python


NLTK 是一个比较特殊的python 库, 它自己还会提供一个download功能, 下载一下语料库, 分词库, 当时遇到的问题是hadoop streaming调用NLTK的函数时, 找不到NLTK自己的语料库, 解决办法:

nltk.data.path.append('/path/to/data')

在代码中显式指定NLTK的语料库文件夹 nltk_data 的位置


Hadoop Streaming 的logs位置:

在HADOOP_HOME的 logs/userlogs下, python脚本可以通过向标准错误中print信息, 来记录日志:

print >> stderr, "error message"
由于各种发行版的log位置和log编码方式都不一样, 我建议可以在python 脚本里指定一个位置自己写入文件记录日志. 可以在所有slave上开一个所有人都拥有写入权限的文件夹, 让脚本输出目录.





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
大数据基于用户画像电影推荐系统是一个涉及Python、Spark和Hadoop等技术的复杂项目。在这个毕业源码案例设计中,源代码包含了多个部分的实现。 首先,Python作为主要的编程语言之一,负责数据的处理和分析。通过Python的数据处理库,我们可以对用户的个人画像数据进行清洗和整合,包括用户的年龄、性别、观影习惯等信息。同时,Python也可以用来编写推荐算法和模型评估的代码。 其次,Spark作为大数据处理和分析的引擎,在这个项目中起着重要的作用。我们可以利用Spark来处理海量的用户观影行为数据,进行分布式计算和数据处理,快速生成用户画像和推荐模型。Spark的机器学习库也可以用来构建推荐系统模型,根据用户的画像特征为其推荐电影。 最后,Hadoop作为大数据存储和管理的平台,负责存储用户的个人画像数据、电影信息数据以及用户观影行为数据。通过Hadoop分布式文件系统(HDFS)和MapReduce计算框架,可以实现数据的高效存储和处理。 在这个毕业源码案例设计中,源代码会包括数据预处理的代码、推荐算法的实现、模型评估的代码,以及与Hadoop和Spark的交互代码等。这些源代码的编写将涉及到Python的数据处理和建模技术,Spark的分布式计算和机器学习技术,以及Hadoop的数据存储和管理技术。通过这些源代码的设计和实现,可以构建一个完整的大数据用户画像电影推荐系统。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱知菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值