python通过pyhdfs连接hdfs的安装配置
2016-05-21 21:05
519 查看
最近由于程序的需要,使用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")
测试文件获取成功!
本着被坑了很久,希望大家早点解决问题的态度,记录下本菜鸟安装的过程。
可以按照下面帖子的方法安装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")
测试文件获取成功!
相关文章推荐
- 【python gensim使用】word2vec词向量处理中文语料
- python命令行上下 退格,左右键不能用
- zeppelin下写python程序
- 【python gensim使用】word2vec词向量处理英文语料
- 地铁译:Spark for python developers ---Spark的数据戏法
- 《Python 核心编程》 学习记录
- 使用Python的urllib2和pyquery 提取深圳市太平洋影城的影讯(二)——Python代码编写
- Python 将数字以科学记数法输出
- python练习六—简单的论坛
- python str.title( )和str.istitle( )
- Python函数式编程之闭包
- python--文件操作之遍历目录
- python字符串内建函数str.index()和str.rindex()
- Python学习笔记--生成器
- Python读取JSON数据,并解决字符集不匹配问题
- Python读取JSON数据,并解决字符集不匹配问题
- python EndUpdateResource问题
- LAN中访问其它主机的jupyter/ipython
- python核心编程
- Python图表绘制:matplotlib绘图库入门/python之import机制详解