python文件hadoop_采用Python来访问Hadoop HSFS存储实现文件的操作

用python访问hdfs是个很头疼的事情。

这个是pyhdfs的库

import pyhdfs

fs = pyhdfs.connect("192.168.1.1", 9000)

pyhdfs.get(fs, "/rui/111", "/var/111")

f = pyhdfs.open(fs, "/test/xxx", "w")

pyhdfs.write(fs, f, "fuck\0gfw\n")

pyhdfs.close(fs, f)

pyhdfs.disconnect(fs)

pyhdfs的安装过程很吐血

svn checkout http://libpyhdfs.googlecode.com/svn/trunk/ libpyhdfs

cd libpyhdfs

cp /usr/lib/Hadoop-0.20/hadoop-core-0.20.2-cdh3u0.jar lib/hadoop-0.20.1-core.jar

cp /usr/lib/hadoop-0.20/lib/commons-logging-1.0.4.jar lib/

cp /usr/lib/libhdfs.so.0 lib/

ln –s lib/libhdfs.so.0 lib/libhdfs.so

python setup.py install --prefix="/usr/local"

还有是把 selinux也给关了 不然会出现莫名的问题

如果出现

/usr/lib/jvm/java-6-sun/include/jni.h:27:20: error: jni_md.h: No such file or directory

搜下find / -name jni.h

然后修改#include "jni_md.h" 为 #include "linux/jni_md.h"

这个是用pydoop的库

import pydoop.hdfs as hdfs

with hdfs.open('/user/myuser/filename') as f:

for line in f:

print(line)

我现在使用的方法是用subprocess

也挺行~

需要把很多自己常用的指定都封装成库

cat = subprocess.Popen(["hadoop", "fs", "-cat", "/path/to/myfile"], stdout=subprocess.PIPE)

for line in cat.stdout:

print line

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值