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迭代器和生成器介绍
Mar 06 Python
Python中的time模块与datetime模块用法总结
Jun 30 Python
python中常用的九种预处理方法分享
Sep 11 Python
用Python将IP地址在整型和字符串之间轻松转换
Mar 22 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
python实现报表自动化详解
Nov 16 Python
深入浅析Python科学计算库Scipy及安装步骤
Oct 12 Python
浅析python redis的连接及相关操作
Nov 07 Python
Python绘制二维曲线的日常应用详解
Dec 04 Python
django创建css文件夹的具体方法
Jul 31 Python
关于Python 解决Python3.9 pandas.read_excel(‘xxx.xlsx‘)报错的问题
Nov 28 Python
Anaconda安装pytorch和paddle的方法步骤
Apr 03 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在服务器执行exec命令失败的解决方法
2012/03/03 PHP
php实现无限级分类(递归方法)
2015/08/06 PHP
PHP基础之输出缓冲区基本概念、原理分析
2019/06/19 PHP
PHP实现简单日历类编写
2020/08/28 PHP
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
javascript定义变量时有var和没有var的区别探讨
2014/07/21 Javascript
微信小程序 tabs选项卡效果的实现
2017/01/05 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
jQuery学习之DOM节点的插入方法总结
2017/01/22 Javascript
微信小程序联网请求的轮播图
2017/07/07 Javascript
jQuery之动画ajax事件(实例讲解)
2017/07/18 jQuery
javaScript封装的各种写法
2017/08/14 Javascript
vue做网页开场视频的实例代码
2017/10/20 Javascript
js正则相关知识点专题
2018/05/10 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
[01:09:20]NB vs NAVI Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
python函数缺省值与引用学习笔记分享
2013/02/10 Python
Python根据区号生成手机号码的方法
2015/07/08 Python
Python的几个高级语法概念浅析(lambda表达式闭包装饰器)
2016/05/28 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
django 获取字段最大值,最新的记录操作
2020/08/09 Python
Python 程序员必须掌握的日志记录
2020/08/17 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
Probikekit日本:自行车套件,跑步和铁人三项装备
2017/04/03 全球购物
自我评价中英文语句
2013/11/30 职场文书
大学自荐信
2013/12/12 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
2015年绩效考核工作总结
2015/05/23 职场文书