pythonhdfs

1.hadoop和python有什么关系

机器学习是一系列算法。

这些算法通常需要大数据,大量的计算 。 hadoop是一种使用多台服务器稳定的进行大规模数据批量处理的软件框架。

其核心是hdfs和map reduce。 python是一个通用语言,支持广泛,上手容易。

当然大数据中的机器学习算法也是很早就可以用pyhon来编写。 python编写的机器学习算法,可以自己用gearman或者是自己建立的分布式计算 系统完成多台PC服务器共同计算 。

当然也可以通过hadoop的stream接口,将python程序运行在hadoop的框架里。 这也是一种成功 的商业模式。

2.如何使用Python为Hadoop编写一个简单的MapReduce程序

在这个实例中,我将会向大家介绍如何使用Python 为 Hadoop编写一个简单的MapReduce程序。

尽管Hadoop 框架是使用Java编写的但是我们仍然需要使用像C++、Python等语言来实现Hadoop程序。尽管Hadoop官方网站给的示例程序是使用Jython编写并打包成Jar文件,这样显然造成了不便,其实,不一定非要这样来实现,我们可以使用Python与Hadoop 关联进行编程,看看位于/src/examples/python/WordCount.py 的例子,你将了解到我在说什么。

我们想要做什么?我们将编写一个简单的 MapReduce 程序,使用的是C-Python,而不是Jython编写后打包成jar包的程序。我们的这个例子将模仿 WordCount 并使用Python来实现,例子通过读取文本文件来统计出单词的出现次数。

结果也以文本形式输出,每一行包含一个单词和单词出现的次数,两者中间使用制表符来想间隔。先决条件编写这个程序之前,你学要架设好Hadoop 集群,这样才能不会在后期工作抓瞎。

如果你没有架设好,那么在后面有个简明教程来教你在Ubuntu Linux 上搭建(同样适用于其他发行版linux、unix)如何使用Hadoop Distributed File System (HDFS)在Ubuntu Linux 建立单节点的 Hadoop 集群如何使用Hadoop Distributed File System (HDFS)在Ubuntu Linux 建立多节点的 Hadoop 集群Python的MapReduce代码使用Python编写MapReduce代码的技巧就在于我们使用了 HadoopStreaming 来帮助我们在Map 和 Reduce间传递数据通过STDIN (标准输入)和STDOUT (标准输出).我们仅仅使用Python的sys.stdin来输入数据,使用sys.stdout输出数据,这样做是因为HadoopStreaming会帮我们办好其他事。这是真的,别不相信!Map: mapper.py将下列的代码保存在/home/hadoop/mapper.py中,他将从STDIN读取数据并将单词成行分隔开,生成一个列表映射单词与发生次数的关系:注意:要确保这个脚本有足够权限(chmod +x /home/hadoop/mapper.py)。

#!/usr/bin/env pythonimport sys# input comes from STDIN (standard input)for line in sys.stdin: # remove leading and trailing whitespace line = line.strip() # split the line into words words = line.split() # increase counters for word in words: # write the results to STDOUT (standard output); # what we output here will be the input for the # Reduce step, i.e. the input for reducer.py # # tab-delimited; the trivial word count is 1 print '%s\\t%s' % (word, 1)在这个脚本中,并不计算出单词出现的总数,它将输出 " 1" 迅速地,尽管可能会在输入中出现多次,计算是留给后来的Reduce步骤(或叫做程序)来实现。当然你可以改变下编码风格,完全尊重你的习惯。

Reduce: reducer.py将代码存储在/home/hadoop/reducer.py 中,这个脚本的作用是从mapper.py 的STDIN中读取结果,然后计算每个单词出现次数的总和,并输出结果到STDOUT。同样,要注意脚本权限:chmod +x /home/hadoop/reducer.py#!/usr/bin/env pythonfrom operator import itemgetterimport sys# maps words to their countsword2count = {}# input comes from STDINfor line in sys.stdin: # remove leading and trailing whitespace line = line.strip() # parse the input we got from mapper.py word, count = line.split('\\t', 1) # convert count (currently a string) to int try: count = int(count) word2count[word] = word2count.get(word, 0) + count except ValueError: # count was not a number, so silently # ignore/discard this line pass# sort the words lexigraphically;## this step is NOT required, we just do it so that our# final output will look more like the official Hadoop# word count examplessorted_word2count = sorted(word2count.items(), key=itemgetter(0))# write the results to STDOUT (standard output)for word, count in sorted_word2count: print '%s\\t%s'% (word, count)测试你的代码(cat data | map | sort | reduce)我建议你在运行MapReduce job测试前尝试手工测试你的mapper.py 和 reducer.py脚本,以免得不到任何返回结果这里有一些建议,关于如何测试你的Map和Reduce的功能:——————————————————————————————————————————————\r\n # very basic test hadoop@ubuntu:~$ echo "foo foo quux labs foo bar quux" | /home/hadoop/mapper.py foo 1 foo 1 quux 1 labs 1 foo 1 bar 1—————————————————————————————————————————————— hadoop@ubuntu:~$ echo "foo foo quux labs foo bar quux" | /home/hadoop/mapper.py | sort | /home/hadoop/reducer.py bar 1 foo 3 labs 1—————————————————————————————————————————————— # using one of the ebooks as example input # (see below on where to get the ebooks) hadoop@ubuntu:~$ cat /tmp/gutenberg/20417-8.txt | /home/hadoop/mapper.py The 1 Project 1 Guten。

3.只懂Python能不能完全驾驭Hadoop

因为hadoop是分布式系统,计算是在所有节点上并行处理的,这意味着,无论你用何种语言,都必须在所有计算节点上安装该语言的解释器。例如,你想用nodejs写mapreduce是可以的,但你必须要在每台nodemanager上安装v8引擎才可以用。而python是安装linux操作系统时就会自动被安装的,因此不需要单独安装就可以让节点参与计算,这样会省很多事。

同时,python语法结构清晰,脚本可维护性高,也是一大优势。

python也包含很多数据分析和挖掘的库包可以直接引用,如num.py。

此外,如果不想在所有服务器安装其他脚本语言的解释器的话,也可以将可运行的解释器和你的计算脚本一起放在hadoop的distributed cache中运行。

想更好的学习python请关注微信公众号“Python基础教程”!

4.如何使用Python为Hadoop编写一个简单的MapReduce程序

在这个实例中,我将会向大家介绍如何使用Python 为 Hadoop编写一个简单的MapReduce程序。

尽管Hadoop 框架是使用Java编写的但是我们仍然需要使用像C++、Python等语言来实现Hadoop程序。尽管Hadoop官方网站给的示例程序是使用Jython编写并打包成Jar文件,这样显然造成了不便,其实,不一定非要这样来实现,我们可以使用Python与Hadoop 关联进行编程,看看位于/src/examples/python/WordCount.py 的例子,你将了解到我在说什么。

我们想要做什么?我们将编写一个简单的 MapReduce 程序,使用的是C-Python,而不是Jython编写后打包成jar包的程序。我们的这个例子将模仿 WordCount 并使用Python来实现,例子通过读取文本文件来统计出单词的出现次数。

结果也以文本形式输出,每一行包含一个单词和单词出现的次数,两者中间使用制表符来想间隔。先决条件编写这个程序之前,你学要架设好Hadoop 集群,这样才能不会在后期工作抓瞎。

如果你没有架设好,那么在后面有个简明教程来教你在Ubuntu Linux 上搭建(同样适用于其他发行版linux、unix)如何使用Hadoop Distributed File System (HDFS)在Ubuntu Linux 建立单节点的 Hadoop 集群如何使用Hadoop Distributed File System (HDFS)在Ubuntu Linux 建立多节点的 Hadoop 集群Python的MapReduce代码使用Python编写MapReduce代码的技巧就在于我们使用了 HadoopStreaming 来帮助我们在Map 和 Reduce间传递数据通过STDIN (标准输入)和STDOUT (标准输出).我们仅仅使用Python的sys.stdin来输入数据,使用sys.stdout输出数据,这样做是因为HadoopStreaming会帮我们办好其他事。这是真的,别不相信!Map: mapper.py将下列的代码保存在/home/hadoop/mapper.py中,他将从STDIN读取数据并将单词成行分隔开,生成一个列表映射单词与发生次数的关系:注意:要确保这个脚本有足够权限(chmod +x /home/hadoop/mapper.py)。

#!/usr/bin/env pythonimport sys# input comes from STDIN (standard input)for line in sys.stdin: # remove leading and trailing whitespace line = line.strip() # split the line into words words = line.split() # increase counters for word in words: # write the results to STDOUT (standard output); # what we output here will be the input for the # Reduce step, i.e. the input for reducer.py # # tab-delimited; the trivial word count is 1 print '%s\\t%s' % (word, 1)在这个脚本中,并不计算出单词出现的总数,它将输出 " 1" 迅速地,尽管可能会在输入中出现多次,计算是留给后来的Reduce步骤(或叫做程序)来实现。当然你可以改变下编码风格,完全尊重你的习惯。

Reduce: reducer.py将代码存储在/home/hadoop/reducer.py 中,这个脚本的作用是从mapper.py 的STDIN中读取结果,然后计算每个单词出现次数的总和,并输出结果到STDOUT。同样,要注意脚本权限:chmod +x /home/hadoop/reducer.py#!/usr/bin/env pythonfrom operator import itemgetterimport sys# maps words to their countsword2count = {}# input comes from STDINfor line in sys.stdin: # remove leading and trailing whitespace line = line.strip() # parse the input we got from mapper.py word, count = line.split('\\t', 1) # convert count (currently a string) to int try: count = int(count) word2count[word] = word2count.get(word, 0) + count except ValueError: # count was not a number, so silently # ignore/discard this line pass# sort the words lexigraphically;## this step is NOT required, we just do it so that our# final output will look more like the official Hadoop# word count examplessorted_word2count = sorted(word2count.items(), key=itemgetter(0))# write the results to STDOUT (standard output)for word, count in sorted_word2count: print '%s\\t%s'% (word, count)测试你的代码(cat data | map | sort | reduce)我建议你在运行MapReduce job测试前尝试手工测试你的mapper.py 和 reducer.py脚本,以免得不到任何返回结果这里有一些建议,关于如何测试你的Map和Reduce的功能:——————————————————————————————————————————————\r\n # very basic test hadoop@ubuntu:~$ echo "foo foo quux labs foo bar quux" | /home/hadoop/mapper.py foo 1 foo 1 quux 1 labs 1 foo 1 bar 1—————————————————————————————————————————————— hadoop@ubuntu:~$ echo "foo foo quux labs foo bar quux" | /home/hadoop/mapper.py | sort | /home/hadoop/reducer.py bar 1 foo 3 labs 1—————————————————————————————————————————————— # using one of the ebooks as example input # (see below on where to get the ebooks) hadoop@ubuntu:~$ cat /tmp/gutenberg/20417-8.txt | /home/hadoop/mapper.py The 1 Project 1 Gutenberg 1 EBook 1 of 1 [。

] (you get the idea) quux 2 quux 1 ————————————————————————————。

pythonhdfs

转载请注明出处代码入门网 » pythonhdfs

资讯

python去除换行

阅读(10)

本文主要为您介绍python去除换行,内容包括python去除字符串列表中的换行符,python如何去除文本中的换行,python怎样去掉字符串后的换行符。Python中换行符为"\n";Python中操作换行符的函数为:replace("\n",""),替换函数;步骤:先判断读取文件,判断

资讯

python自然语言

阅读(8)

本文主要为您介绍python自然语言,内容包括PYTHON自然语言处理怎么样,用Python做自然语言理解方面的人多么,精通python自然语言处理怎么样。记得2007年上半年,最初读到这本书的时候还是草稿,用了整个一个暑假来仔细研究这本书,现在已经和以前的

资讯

pythonsort()函数

阅读(7)

本文主要为您介绍pythonsort()函数,内容包括pythonsort()用法,python怎么使用sort,Python里的sort语句。Python中的sort()方法用于数组排序,下面以实例形式对此加以详细说明:基本形式列表有自己的sort方法,其对列表进行原址排序,既

资讯

python的for遍历数组

阅读(9)

本文主要为您介绍python的for遍历数组,内容包括python怎么遍历一个数组,python用for循环筛选数组,python如何将for循环的结果写成一个数组。dataframe创建方法有很多,常用基本格式是:dataframe 构造器参数:dataframe(data=[],index=[],

资讯

pythoninstallmysql

阅读(8)

本文主要为您介绍pythoninstallmysql,内容包括如何安装MySQLpython,在python中怎样安装mysql,python中怎么安装setuotools。安装mysql首先到mysql官网下载文件:mysql-installer-community.msi 安装过程同一般exe文件,不再叙

资讯

dir()python

阅读(8)

本文主要为您介绍dir()python,内容包括python语言中的内建函数dir()是干啥用的啊,python的dir和help用法,python的dir和help用法。dir()dir([object]) -> list of stringsReturn an alphabetized list of

资讯

python默认安装

阅读(8)

本文主要为您介绍python默认安装,内容包括Python3.5的默认安装路径怎么变了,windowspython怎么安装包,Python怎么安装,如何安装python。在WINDOWS中安装python的方法:下载python安装包2、双击安装程序python-2.5.2.msi3、选择Install

资讯

pythonc扩展

阅读(6)

本文主要为您介绍pythonc扩展,内容包括python怎么作为c语言的扩展,Python的C语言扩展,python扩展的c代码在哪里写。Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1

资讯

db2python

阅读(6)

本文主要为您介绍db2python,内容包括python如何连接DB2数据库,python怎么连接db2数据库,求助,请问各位高手如何实现从DB2远程将数据迁移到linux下的post。snip 的英文原意是削减,剪去的意思。在Python 中,snip 就是代表省略代码的意思,把前面

资讯

pythonmysql数据库

阅读(6)

本文主要为您介绍pythonmysql数据库,内容包括如何使用python连接mysql数据库,python怎么使用mysql数据库,python中怎么操作mysql数据库。你可以访问Python数据库接口及API查看详细的支持数据库列表。不同的数据库你需要下载不同的DB API模

资讯

pythontimer

阅读(8)

本文主要为您介绍pythontimer,内容包括怎么使用python的timer,怎么使用python的timer,python的timer在哪个模块。hreading Timer:# python3.3# coding: UTF-8import threadingdef PrintHe

资讯

python标准库中文

阅读(6)

本文主要为您介绍python标准库中文,内容包括Python常用的标准库以及第三方库,Python常用的标准库以及第三方库,python标准库。标库Python拥有一个强大的标准库。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由

资讯

pythonsplit(函数

阅读(8)

本文主要为您介绍pythonsplit(函数,内容包括python中split的具体用法,Python字符串操作的split方法,python中split的具体用法。str.split()没有参数,代表以空字符分割,空字符包括空格、制表符、回车符、换行符等。因此,字符串中的空格和\n都是

资讯

pythonbreak

阅读(6)

本文主要为您介绍pythonbreak,内容包括python里的break语句啥意思,关于Python中break的用法,python里的break语句啥意思。像c语言中的goto,shell中的break 后面跟跳出层次的在方法在python中都没有,这可不是因为python设计的low,而是

资讯

毕业设计python

阅读(1)

本文主要为您介绍毕业设计python,内容包括用python做毕业设计,做个什么题目稍微容易一点,用Python做毕业设计选什么项目比较好,刚刚接触python,正好赶上毕设,想做python,由于是新手,所以想拜。首先你选择Python就很好,且不说Python本身很简

资讯

pythonlinux开发

阅读(1)

本文主要为您介绍pythonlinux开发,内容包括如何在linux下开发python程序,pycharm怎么开发linux程序,linux和python先学哪个。众所周知,系统管理员需要精通一门脚本语言,而且招聘机构列出的职位需求上也会这么写。大多数人会认为 Bash (或者其

资讯

python上海

阅读(1)

本文主要为您介绍python上海,内容包括上海python培训学费多少钱老男孩培训机构多少钱,想学习python,麻烦问一下上海哪家比较好一点的培训机构有这个课程,上海python就业前景是否值得期待。优点 门槛低,上手快; 2、比 R 更具有通用性和实用性

资讯

python程序运行时

阅读(1)

本文主要为您介绍python程序运行时,内容包括分析python程序运行时间的几种方法,python的程序怎么运行,如何运行Python程序。你在windows下根本不用这么麻烦: 首先,比如你的程序名字是 test.py 如果你想调用某个具体函数,就自己写一个的文件,比

资讯

python在线编译

阅读(1)

本文主要为您介绍python在线编译,内容包括python在线编译器哪个,求一个好的免费的Python编译器,最好是直接丢链接,谢谢大佬,什么软件可以编译Python。实际上python 是脚本语言解释执行的,并不存在编译这个概念。用python -m py_compile file

资讯

pythonascii字符

阅读(1)

本文主要为您介绍pythonascii字符,内容包括python判断纯ASCII字符串怎么做,如何使用Python获得一个字符的ASCII值,python怎么判断ascii字符串问题。如果要判断某路径是否包换中文,可以用正则表达式判断是否含有双字节字符>>> import re>>> r

资讯

python进程通信

阅读(1)

本文主要为您介绍python进程通信,内容包括python进程间通信怎么理解,python进程间通信怎么理解,python进程间通信怎么理解。在2.6才开始使用multiprocessing 是一个使用方法类似threading模块的进程模块。允许程序员做并行开发。并且可以在

资讯

eclipse运行python

阅读(1)

本文主要为您介绍eclipse运行python,内容包括如何在eclipse中运行python,如何在eclipse中运行python,怎么用eclipse打开python项目。下载python下载eclipse假设有上面两个,下载一个Python的Eclipse插件pydev下载完后将其解压到Eclipse的目

资讯

python类的self

阅读(1)

本文主要为您介绍python类的self,内容包括python怎么理解类和self的用法和含义,python怎么理解类和self的用法和含义,python中self是什么意思。python的class保留了语言在进化过程中的一些遗迹。对象这种概念,可以追溯到C语言中大量使用的结

资讯

数组长度python

阅读(1)

本文主要为您介绍数组长度python,内容包括python数组要先定义长度吗,python数组要先定义长度吗,python如何输入一个长度不定的数组。视情况而定如果你的数来组是追加一个元素的可以不用定义长度如果你初始化一个列自表然后要修改其中的值的