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实现抓取百度搜索结果页的网站标题信息
Jan 22 Python
连接Python程序与MySQL的教程
Apr 29 Python
Python之父谈Python的未来形式
Jul 01 Python
详谈Python基础之内置函数和递归
Jun 21 Python
Python 实现一行输入多个值的方法
Apr 21 Python
python中实现字符串翻转的方法
Jul 11 Python
通过python爬虫赚钱的方法
Jan 29 Python
python 实现交换两个列表元素的位置示例
Jun 26 Python
Python学习笔记之集合的概念和简单使用示例
Aug 22 Python
Python编写一个验证码图片数据标注GUI程序附源码
Dec 09 Python
Django中的DateTimeField和DateField实现
Feb 24 Python
python3+PyQt5+Qt Designer实现界面可视化
Jun 10 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
PHP查询网站的PR值
2013/10/30 PHP
PHP面向对象程序设计之类与反射API详解
2016/12/02 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
jquery遍历input取得input的name
2009/04/27 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
JS动态添加option和删除option(附实例代码)
2013/04/01 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
JS实现超炫网页烟花动画效果的方法
2015/03/02 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
vue首次赋值不触发watch的解决方法
2018/09/11 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
如何在 Vue 表单中处理图片
2021/01/26 Vue.js
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
[02:47]2018年度DOTA2最佳辅助位选手4号位-完美盛典
2018/12/17 DOTA
35个Python编程小技巧
2014/04/01 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
2018/02/13 Python
Python3.4实现远程控制电脑开关机
2018/02/22 Python
用python爬取租房网站信息的代码
2018/12/14 Python
Python3 批量扫描端口的例子
2019/07/25 Python
详解Python中正则匹配TAB及空格的小技巧
2019/07/26 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
Python configparser模块封装及构造配置文件
2020/08/07 Python
PHP如何去执行一个SQL语句
2016/03/05 面试题
开办化妆品公司创业计划书
2013/12/26 职场文书
给分销商的致歉信
2014/01/14 职场文书
2014年上半年工作自我评价
2014/01/18 职场文书
简历的自我评价
2014/02/03 职场文书
怀念母亲教学反思
2014/04/28 职场文书
营销总监岗位职责
2014/09/16 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang