当前位置: 首页 > 编程笔记 >

python访问hdfs的操作

巫化
2023-03-14
本文向大家介绍python访问hdfs的操作,包括了python访问hdfs的操作的使用技巧和注意事项,需要的朋友参考一下

pip install hdfs

python 读取hdfs目录或文件

import hdfs
 
client =hdfs.Client("http://10.10.1.4:50070")
fileDir="/user/hive/warehouse/house.db/dm_house/dt=201800909"
try:
  status=client.status(fileDir,False)
  if status:
    print (status)
    rst=client.download(fileDir,"/home/dev/gewei")
    print (rst)
exception Exception as e:
  print (e)

补充知识:用python访问hdfs出现webhdfs找不到的情况

有可能是webhdfs服务没有开启

向hdfs-site.xml文件中添加属性:

<property> 
  <name>dfs.webhdfs.enabled</name> 
  <value>true</value> 
</property> 

可以使用如下命令检测,

获得目录的列表:

curl -i "http://Hadoop:50070/webhdfs/v1/?user.name=hadoop&op=LISTSTATUS"

以上这篇python访问hdfs的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。

 类似资料:
  • 我成功地kerberized了一个测试Hortonworks集群。Ambari为这些服务创建了keytabs,并且它们都已启动。名称编号有HA。备用名称节点启动得快,活动名称节点需要更长得时间。Namenode UI显示一切都是正确的。可以使用Kerberos登录。名称编号为nn1.zim.com和nn2.zim.com 这个配置会有什么问题呢?以hdfs登录,用kinit-kt加载keytab。

  • 命令 功能 hdfs dfs -ls /foo/.snapshot 列出一个可快照目录下的所有快照 hdfs dfs -ls /foo/.snapshot/s0 列出快照s0的所有文件 hdfs dfs -cp -ptopax /foo/.snapshot/s0/bar /tmp 从快照s0拷贝一个文件,注意一下这个例子使用了保留选项来保留timestamps,ownership,permissi

  • 问题内容: 我正在尝试连接到在Cloudera上运行的HDFS实例。我的第一个步骤启用Kerberos和创建Keytabs(如图所示这里)。 在下一步中,我想使用密钥表进行身份验证。 它失败并显示以下错误 java.io.IOException:从keytab /etc/hadoop/conf/hdfs.keytab登录hdfs @ CLOUDERA失败:javax.security.auth.l

  • 执行上述代码时,exchange属性不会发生变异。 我也尝试过以下方法,但没有成功: 作为一个测试,当我按照下面的方式修改代码以排除故障时,下面的代码确实会发出一个硬编码字符串,并且exchange属性发生了变化。

  • 问题内容: 我被困在一个相当复杂的Python模块中,该模块不会返回有用的错误代码(它实际上会无声地失败而失败)。但是,它调用的基础C库设置了errno。 通常,errno是通过OSError属性传入的,但是由于我没有异常,因此无法理解。 使用ctypes时,libc.errno不起作用,因为errno是GNU libc中的宏。Python 2.6有一些优势,但Debian仍使用Python 2.

  • 我使用kerberos身份验证配置了HDFS,我可以使用自己的keytab文件访问HDFS集群中任何机器上的HDFS。但是当我使用相同的keytab访问HDFS集群外的远程服务器上的HDFS时,我无法访问。我收到以下错误消息,顺便说一下,我已经将服务器的配置文件krb5.conf复制到hadoop集群外的远程机器。

  • 我正试图用bde2020提供的图像构建一个轻量级的最小hadoop堆栈(学习目的)。现在,堆栈包括(除其他外) 名称节点 基本上,我从大数据欧洲官方docker撰写开始,并根据他们的留档添加了色调图像 色调的文件浏览器无法访问HDFS: 将所有服务显式放到同一网络上 当我登录到hue的容器时,我可以看到namenode的端口9870是打开的()。50070不是。我认为我的问题与网络无关。尽管编辑了