python读取hdfs并返回dataframe教程


Posted in Python onJune 05, 2020

不多说,直接上代码

from hdfs import Client
import pandas as pd
 
HDFSHOST = "http://xxx:50070"
FILENAME = "/tmp/preprocess/part-00000" #hdfs文件路径
COLUMNNAMES = [xx']
 
def readHDFS():
'''
读取hdfs文件
 
Returns:
df:dataframe hdfs数据
'''
client = Client(HDFSHOST)
# 目前读取hdfs文件采用方式:
# 1. 先从hdfs读取二进制数据流文件
# 2. 将二进制文件另存为.csv
# 3. 使用pandas读取csv文件
with client.read(FILENAME) as fs:
content = fs.read()
s = str(content, 'utf-8')
file = open("data/tmp/data.csv", "w")
file.write(s)
df = pd.read_csv("data/tmp/data.csv", names=COLUMNNAMES)
return df

补充知识:Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV

1. 目标

通过hadoop hive或spark等数据计算框架完成数据清洗后的数据在HDFS上

爬虫和机器学习在Python中容易实现

在Linux环境下编写Python没有pyCharm便利

需要建立Python与HDFS的读写通道

2. 实现

安装Python模块pyhdfs

版本:Python3.6, hadoop 2.9

读文件代码如下

from pyhdfs import HdfsClient
client=HdfsClient(hosts='ghym:50070')#hdfs地址
res=client.open('/sy.txt')#hdfs文件路径,根目录/
for r in res:
  line=str(r,encoding='utf8')#open后是二进制,str()转换为字符串并转码
  print(line)

写文件代码如下

from pyhdfs import HdfsClient
client=HdfsClient(hosts='ghym:50070',user_name='hadoop')#只有hadoop用户拥有写权限
str='hello world'
client.create('/py.txt',str)#创建新文件并写入字符串

上传本地文件到HDFS

from pyhdfs import HdfsClient
client = HdfsClient(hosts='ghym:50070', user_name='hadoop')
client.copy_from_local('d:/pydemo.txt', '/pydemo')#本地文件绝对路径,HDFS目录必须不存在

3. 读取文本文件写入csv

Python安装pandas模块

确认文本文件的分隔符

# pyhdfs读取文本文件,分隔符为逗号,
from pyhdfs import HdfsClient
client = HdfsClient(hosts='ghym:50070', user_name='hadoop')
inputfile=client.open('/int.txt')
# pandas调用读取方法read_table
import pandas as pd
df=pd.read_table(inputfile,encoding='gbk',sep=',')#参数为源文件,编码,分隔符
# 数据集to_csv方法转换为csv
df.to_csv('demo.csv',encoding='gbk',index=None)#参数为目标文件,编码,是否要索引

以上这篇python读取hdfs并返回dataframe教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python入门及进阶笔记 Python 内置函数小结
Aug 09 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
Nov 23 Python
Python2中文处理纪要的实现方法
Mar 10 Python
Python实现的堆排序算法示例
Apr 29 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
使用Python AIML搭建聊天机器人的方法示例
Jul 09 Python
使用python绘制二元函数图像的实例
Feb 12 Python
Python迭代器iterator生成器generator使用解析
Oct 24 Python
pytorch 获取tensor维度信息示例
Jan 03 Python
python由已知数组快速生成新数组的方法
Apr 08 Python
python之语音识别speech模块
Sep 09 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
python pymysql链接数据库查询结果转为Dataframe实例
Jun 05 #Python
python mysql中in参数化说明
Jun 05 #Python
JAVA SWT事件四种写法实例解析
Jun 05 #Python
pandas 像SQL一样使用WHERE IN查询条件说明
Jun 05 #Python
基于Python爬虫采集天气网实时信息
Jun 05 #Python
浅谈pymysql查询语句中带有in时传递参数的问题
Jun 05 #Python
Python调用.net动态库实现过程解析
Jun 05 #Python
You might like
ThinkPHP模板判断输出Empty标签用法详解
2014/06/30 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
PHP实现上传多图即时显示与即时删除的方法
2017/05/09 PHP
php支付宝APP支付功能
2020/07/29 PHP
删除重复数据的算法
2006/11/23 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
JavaScript验证18位身份证号码最后一位正确性的实现代码
2014/08/07 Javascript
javascript模拟post提交隐藏地址栏的参数
2014/09/03 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
JavaScript组件开发完整示例
2015/12/15 Javascript
JavaScript驾驭网页-获取网页元素
2016/03/24 Javascript
js实现3D图片展示效果
2017/03/09 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
Node.js简单入门前传
2017/08/21 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
2018/08/10 Javascript
iview Upload组件多个文件上传的示例代码
2018/09/30 Javascript
如何为你的JS项目添加智能提示与类型检查详解
2019/03/12 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
vue实现图片按比例缩放问题操作
2020/08/11 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
Vite和Vue CLI的优劣
2021/01/30 Vue.js
python字典序问题实例
2014/09/26 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Python实现的简单计算器功能详解
2018/08/25 Python
Python高级特性与几种函数的讲解
2019/03/08 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
详解Python设计模式之策略模式
2020/06/15 Python
解决Pycharm 运行后没有输出的问题
2021/02/05 Python
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
李维斯法国官网:Levi’s法国
2019/07/13 全球购物
认识深刻的检讨书
2014/02/16 职场文书
服务之星事迹材料
2014/05/03 职场文书
战略性融资合作协议书范本
2014/10/17 职场文书