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在Windows8下获取本机ip地址的方法
Mar 14 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
Python冲顶大会 快来答题!
Jan 17 Python
详解python中的线程
Feb 10 Python
Python 字符串换行的多种方式
Sep 06 Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 Python
Django实现跨域请求过程详解
Jul 25 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
Dec 10 Python
Python动态导入模块:__import__、importlib、动态导入的使用场景实例分析
Mar 30 Python
基于python实现matlab filter函数过程详解
Jun 08 Python
python如何利用traceback获取详细的异常信息
Jun 05 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
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
详解PHP执行定时任务的实现思路
2015/12/21 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
一个不错的用JavaScript实现的UBB编码函数
2007/03/09 Javascript
用javascript将数据库中的TEXT类型数据动态赋值到TEXTAREA中
2007/04/20 Javascript
JS是否可以跨文件同时控制多个iframe页面的应用技巧
2007/12/16 Javascript
Draggable Elements 元素拖拽功能实现代码
2011/03/30 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
在JavaScript中处理时间之getHours()方法的使用
2015/06/10 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
vue如何搭建多页面多系统应用
2020/06/17 Javascript
[00:12]2018DOTA2亚洲邀请赛 Sccc亮相SOLO赛,今年他又会有什么样的战绩?
2018/04/06 DOTA
[02:42]DOTA2城市挑战赛收官在即 四强之争风起云涌
2018/06/05 DOTA
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
Python 模拟登陆的两种实现方法
2017/08/10 Python
python爬虫基本知识
2018/03/05 Python
Python输入二维数组方法
2018/04/13 Python
python双端队列原理、实现与使用方法分析
2019/11/27 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
python切割图片的示例
2020/11/12 Python
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
大学毕业生自荐书怎么写?
2014/01/06 职场文书
美德少年事迹材料
2014/01/23 职场文书
初三开学计划书
2014/04/27 职场文书
教书育人演讲稿
2014/09/11 职场文书
党旗在我心中演讲稿
2014/09/15 职场文书
企业财务经理岗位职责
2015/04/08 职场文书
七年级话题作文之执着
2019/11/19 职场文书
python3实现无权最短路径的方法
2021/05/12 Python
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏