一、Python连接HDFS实现文件上传下载
要实现Python连接HDFS实现文件上传下载,需要用到hdfs3这个Python库。具体步骤如下:
- 安装hdfs3库:
!pip install hdfs3
- 导入hdfs3库:
from hdfs3 import HDFileSystem
- 创建连接:
hdfs = HDFileSystem(host='172.25.0.101', port=8020)
其中,host和port需要根据HDFS的配置进行修改。
- 上传文件:
with open('local_file.txt', 'rb') as f:
hdfs.put('hdfs://your_hdfs_path/hdfs_file.txt', f)
其中,local_file.txt为本地文件路径,hdfs://your_hdfs_path/hdfs_file.txt为HDFS文件路径。
- 下载文件:
with hdfs.open('hdfs://your_hdfs_path/hdfs_file.txt', 'rb') as f:
with open('local_file.txt', 'wb') as fw:
fw.write(f.read())
其中,hdfs://your_hdfs_path/hdfs_file.txt为HDFS文件路径,local_file.txt为本地文件路径。
二、Pandas转换文本文件到CSV操作
要实现Pandas转换文本文件到CSV操作,需要用到Pandas这个Python库。具体步骤如下:
- 导入Pandas库:
import pandas as pd
- 读取文本文件:
df = pd.read_table('file.txt', header=None, delim_whitespace=True)
其中,file.txt为文本文件路径,header=None表示不对文件进行标题处理。
- 转换成CSV文件:
df.to_csv('file.csv')
其中,file.csv为生成的CSV文件的路径。
示例一:
假设有一个文本文件file.txt,内容如下:
name age gender
Alice 26 F
Bob 31 M
Charlie 45 M
我们需要将它转换成CSV文件file.csv,使用如下代码:
import pandas as pd
df = pd.read_table('file.txt', header=None, delim_whitespace=True)
df.to_csv('file.csv')
执行完毕后,程序会在当前目录下生成一个名为file.csv的文件,内容如下:
,name,age,gender
0,Alice,26,F
1,Bob,31,M
2,Charlie,45,M
示例二:
假设我们已经在HDFS上上传了文件local_file.txt,路径为hdfs://your_hdfs_path/local_file.txt,接下来需要将它下载到本地,并转换成CSV格式。使用如下代码:
from hdfs3 import HDFileSystem
import pandas as pd
# 建立HDFS连接
hdfs = HDFileSystem(host='172.25.0.101', port=8020)
# 从HDFS下载文件到本地
with hdfs.open('hdfs://your_hdfs_path/local_file.txt', 'rb') as f:
with open('local_file.txt', 'wb') as fw:
fw.write(f.read())
# 读取文本文件
df = pd.read_table('local_file.txt', header=None, delim_whitespace=True)
# 转成CSV文件
df.to_csv('local_file.csv')
执行完毕后,程序会在当前目录下生成一个名为local_file.csv的文件,内容与示例一相同。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作 - Python技术站