小编sam*_*ias的帖子

Hadoop Streaming Job在python中失败了

我有一个用Python编写的mapreduce工作.该程序在linux env中成功测试,但在Hadoop下运行时失败了.

这是作业命令:

hadoop  jar $HADOOP_HOME/contrib/streaming/hadoop-0.20.1+169.127-streaming.jar \
   -input /data/omni/20110115/exp6-10122 -output /home/yan/visitorpy.out \
   -mapper SessionMap.py   -reducer  SessionRed.py  -file SessionMap.py \
   -file  SessionRed.py
Run Code Online (Sandbox Code Playgroud)

Session*.py的模式是755,#!/usr/bin/env python是*.py文件中的第一行.Mapper.py是:

#!/usr/bin/env python
import sys
 for line in sys.stdin:
         val=line.split("\t")
         (visidH,visidL,sessionID)=(val[4],val[5],val[108])
         print "%s%s\t%s" % (visidH,visidL,sessionID)
Run Code Online (Sandbox Code Playgroud)

日志错误:

java.io.IOException: Broken pipe
    at java.io.FileOutputStream.writeBytes(Native Method)
    at java.io.FileOutputStream.write(FileOutputStream.java:260)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:105)
    at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:65)
    at java.io.BufferedOutputStream.write(BufferedOutputStream.java:109)
    at java.io.DataOutputStream.write(DataOutputStream.java:90)
    at org.apache.hadoop.streaming.io.TextInputWriter.writeUTF8(TextInputWriter.java:72)
    at org.apache.hadoop.streaming.io.TextInputWriter.writeValue(TextInputWriter.java:51)
    at org.apache.hadoop.streaming.PipeMapper.map(PipeMapper.java:110)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
    at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:307)
    at org.apache.hadoop.mapred.Child.main(Child.java:170)
    at org.apache.hadoop.streaming.PipeMapper.map(PipeMapper.java:126)
    at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:50)
    at org.apache.hadoop.streaming.PipeMapRunner.run(PipeMapRunner.java:36)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:358) …
Run Code Online (Sandbox Code Playgroud)

python hadoop mapreduce

5
推荐指数
2
解决办法
1万
查看次数

如何检查传入的HTTP标头请求的内容

我正在玩一些API,我试图解决这个问题.

我正在通过API向我的服务器发出基本的HTTP身份验证请求.作为此请求的一部分,经过身份验证的密钥将作为用户名存储在HTTP标头中.

所以我的问题是,如何获取传入请求的内容,以便我可以对其进行检查?

我想做什么:

if incoming request has header == 'myheader':
    do some stuff
else:
    return ('not authorised')
Run Code Online (Sandbox Code Playgroud)

对于那些感兴趣的人,我试图让这个工作.

更新 我正在使用Django

python django basic-authentication http-headers

3
推荐指数
1
解决办法
8968
查看次数

从证书中提取公钥并加密数据

这是一个家庭作业!我使用服务器的证书get_peer_certificate() 和调用dump_certificate将证书转储到变量中.格式是PEM,看起来对我来说.

-----BEGIN CERTIFICATE-----
GIBBERISH................
......................
........................

-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)

如何从此文件('server.pubkey')中提取服务器的公钥,并plaintext使用RSA算法和任何python库进行加密.在撰写本文时,我正在使用pyOpenSSL

python network-programming rsa pyopenssl

3
推荐指数
2
解决办法
6160
查看次数

Mysqldb AttributeError:cursor

我开始在python中使用mysqldb模块,我似乎在调用查询的"标准"方式方面存在一些问题.

我知道标准方法是创建一个游标然后用它来执行查询.

但是,当我尝试实现一个时,它会给我以下错误:

AttributeError:cursor

我的数据库类看起来像:

class Database():

    def __init__(self):
        server = "localhost"
        login = "login"
        password = "passws"
        database = "DB"
        my_conv = { FIELD_TYPE.LONG: int }

        self.conn = MySQLdb.connection(user=login, passwd=password, db=database, host=server, conv=my_conv)
        self.cursor = self.conn.cursor()

    def close(self):
        self.conn.close()

    def execute(self, query):
        self.cursor.execute(query)
        return self.cursor.fetchall()
Run Code Online (Sandbox Code Playgroud)

现在我通过使用查询方法让它工作,但我觉得不使用标准会给我带来麻烦.

任何的想法 ?

python mysql mysql-python

2
推荐指数
1
解决办法
9108
查看次数