python通过pyhdfs连接hdfs的安装配置

本文档记录了使用Python的pyhdfs库连接HDFS的详细步骤,包括安装、配置和解决常见问题。首先,将所需.jar文件放入库中并修改setup.py,接着检查和调整路径以确保模块能被正确导入。如果遇到找不到模块的问题,可通过执行特定的查找和设置CLASSPATH的命令来解决。最后,展示了如何通过pyhdfs.connect()建立连接并进行文件操作。

最近由于程序的需要,使用python操作hdfs的内容。查找发现可以通过pydhfs操作hdfs,但是网上的教程多数比较老。

本着被坑了很久,希望大家早点解决问题的态度,记录下本菜鸟安装的过程。

可以按照下面帖子的方法安装pyhdfs

http://blog.csdn.net/w894607785/article/details/50205857

将所有的.jar放入lib库中,然后可以修改setup.py中的

pyhdfs = Extension('pyhdfs',

sources = ['src/pyhdfs.c'],

include_dirs = ['/usr/lib/jvm/jdk1.8.0_73/includes'],

libraries = ['hdfs'],

library_dirs = ['lib'],

runtime_library_dirs = ['/usr/local/lib/pyhdfs', '/usr/lib/jvm/jdk1.8.0_73/jre/lib/amd64/server'],

)


修改include_dirs和runtime_dirs为机器上的jdk安装路径,然后运行setup.py

完成后可以在python shell中尝试导入import pyhdfs

当出现无法找到模块错误时,检查setup中的路径是否正确

导入成功后可以输入

pyhdfs.connect('127.0.0.1',9000)尝试连接hdfs

如果出现

unable to get stack trace for java.lang.NoClassDefFoundError exception: ExceptionUtils::getStackTrace error.)

解决方法如下:

可以在程序前添加绿色部分:


import os

import pyhdfs


hadoop_path = '/usr/local/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


a = pyhdfs.connect('127.0.0.1',9000)

pyhdfs.get(a, "/test/1", "/home/hadoop/test_hdfs")

测试文件获取成功!


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值