python hdfs远程连接以及上传文件,读取文件内容,删除文件

这篇具有很好参考价值的文章主要介绍了python hdfs远程连接以及上传文件,读取文件内容,删除文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、python连接操作hdfs

1 往hdfs上传文件

2 处理并存储到hdfs

3 读取hdfs上的txt文件


这里使用的是 pip 安装,很方便:

pip install hdfs

一、python连接操作hdfs

from hdfs.client import Client
client = Client("http://LocalHost:Port")

client.makedirs('/ml/zmingmingmng')#建立文件夹
client.delete('/ml/zmming')#删除文件夹
client.upload("/ml/zmingmingmng/zm.txt","E:/ttt/testhdfs.txt")#上传文件
client.download("/ml/zmingmingmng/zm.txt","E:/ming.txt")#下载文件
# -*- encoding=utf-8 -*-
from hdfs.client import Client


client = Client("http://XXX.XXX.XX.XX:50070")

# 创建目录
def mkdirs(client, hdfs_path):
    client.makedirs(hdfs_path)


# 删除hdfs文件
def delete_hdfs_file(client, hdfs_path):
    client.delete(hdfs_path)


# 上传文件到hdfs
def put_to_hdfs(client, local_path, hdfs_path):
    client.upload(hdfs_path, local_path, cleanup=True)


# 从hdfs获取文件到本地
def get_from_hdfs(client, hdfs_path, local_path):
    client.download(hdfs_path, local_path, overwrite=False)


# 追加数据到hdfs文件
def append_to_hdfs(client, hdfs_path, data):
    client.write(hdfs_path, data, overwrite=False, append=True)


# 覆盖数据写到hdfs文件
def write_to_hdfs(client, hdfs_path, data):
    client.write(hdfs_path, data, overwrite=True, append=False)


# 移动或者修改文件
def move_or_rename(client, hdfs_src_path, hdfs_dst_path):
    client.rename(hdfs_src_path, hdfs_dst_path)


# 返回目录下的文件
def list(client, hdfs_path):
    return client.list(hdfs_path, status=False)


if __name__ == '__main__':
    # 调用
    kk=list(client,"/user/admin/deploy/user_lable_dimension/")
    for each in kk:
        print(each)


 

1 往hdfs上传文件

from hdfs.client import Client

"""往hdfs上传文件"""

# TODO 往hdfs上传文件
client = Client("http://XXX.XXX.XX.XX:50070")

# 新建文件夹
hdfs_path ="【文件要存放的目录路径,eg:/a/b/c】"
client.makedirs(hdfs_path)

print("uploading data...")
client.upload(hdfs_path, "intersection.xlsx", overwrite=True)	# 资源中心上传的文件

 

2 处理并存储到hdfs

# TODO 先得到结果列表。eg:i_list

# TODO 把结果列表存储成文件上传到hdfs
print("===============================================")
i_df = pd.DataFrame(i_list)
client = Client("http://XXX.XXX.XX.XX:50070")

fout = "【文件要存放的路径,eg:/a/b/c.csv】"  # hdfs下的目录
with client.write(fout, encoding='utf-8') as writer:
    i_df.to_csv(writer)
print("存储成功")

 文章来源地址https://www.toymoban.com/news/detail-514379.html

3 读取hdfs上的txt文件

from hdfs.client import Client
import json
from kafka import KafkaConsumer
import time
import pyhdfs

def  GetEncodingSheme(_filename):
    """ 查看文本编码方式 """
    with open(_filename, 'rb') as file:
        buf = file.read()
    result = chardet.detect(buf)
    return result['encoding']


def read_hdfs_file(client, filename):
    """读取hdfs文件内容,将每行存入数组返回"""
    lines = []
    print("开始读取txt数据")
    with client.open(filename, delimiter='\n') as reader:
        for line in reader:
            lines.append(line.decode("GB2312").strip())
    return lines


def deleteHDFSfile(client, hdfs_path):
    """删除hdfs文件,删除文件夹时该文件夹必须为空"""
    client.delete(hdfs_path)



if __name__ == "__main__":
	print(GetEncodingSheme('intersection.xlsx'))    # GB2312
    
    # hdfs连接
    client = pyhdfs.HdfsClient(hosts="http://xxxxxx:50070,http://xxxxxx:50070", user_name="xxxxxx")

    # TODO 读取hdfs文件内容,将每行存入数组返回
    hdfs_path = "【文件路径,eg:/a/b/c.xlsx】"    # hdfs存储目录
    print("===============================================")
    print("开始读取hdfs上的txt文件")
    lines = read_hdfs_file(client, hdfs_path)
    print(lines)
    print("读取完成")
    print("===============================================")


    # TODO 删除hdfs存储目录下的文件
    hdfs_path = "【文件路径】"
    deleteHDFSfile(client, hdfs_path)

到了这里,关于python hdfs远程连接以及上传文件,读取文件内容,删除文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包