python 与hadoop之pyhdfs的使用

安装好pyhdfs并不等于你就可以安心的敲代码了;

主要问题是:在import pyhdfs时提示没有这个库;
这是个问题出在:python setup.py install –prefix=’/usr’
后面的/usr这个应该是python 库的路径上面,默认的是/usr/local/下面。
其次是:
在不报没有这个库后,在向hdfs中写入数据时,就会出现很多问题;
最开始的两个问题就是:
loadFileSystems error:
(unable to get stack trace for java.lang.NoClassDefFoundError exception: ExceptionUtils::getStackTrace error.)
在网上找到了解决方法(出现的问题与
http://m.blog.csdn.net/blog/Aquester/25242215
该博主的问题相似,照着也就把问题解决了;
但是该博主的最后的方法有点问题:
find /data/hadoop/current/ -name *.jar|awk ‘{ printf(“export CLASSPATH=%s: CLASSPATH\n", 0); }’
这个并不能添加classpath的内容,值简单的print出来了,我复制粘贴到shell(上句执行的内容太)中就好了。但是个人更喜欢在运行时添加:

#系统classpath设置
#hadoop的安装路径
hadoop_path = '/hadoop/share/hadoop/'

comm_line = 'find ' + hadoop_path + ' -name *.jar'
classpath_str = os.popen(comm_line).read()
if classpath_str.find('command not found') != -1:
    #把错误写道日志中
    error_log.config_log().error(classpath_str)
else:
    classpath_list = classpath_str.strip().split()
    classpath_str = ''
    for path in classpath_list:
        classpath_str = classpath_str + ':' + path

CLASSPATH = os.environ["CLASSPATH"]
os.environ['CLASSPATH'] = CLASSPATH + classpath_str

现在就可以安心的向hdfs中写数据(但不能append);

再换了hadoop后必须重新安装一下pyhdfs库;
安装的时候要注意的是:
先删除 /usr/lib64/中的libhdfs.so*
然后删除/usr/local/python*/site-packages/pyhdfs.so
最后设置路径再安装

在连接其他版本的hadoop时会出现问题(远程连接),所以如果想能过成功的传输数据,那就要在安装pyhdfs时就应该选择对应的hadoop!

你可能感兴趣的:(python)