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实现对比不同字体中的同一字符的显示效果
Apr 23 Python
python简单实现刷新智联简历
Mar 30 Python
Python内置的HTTP协议服务器SimpleHTTPServer使用指南
Mar 30 Python
python使用fork实现守护进程的方法
Nov 16 Python
全面了解Nginx, WSGI, Flask之间的关系
Jan 09 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
Jun 27 Python
python实现石头剪刀布小游戏
Jan 20 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
在pycharm下设置自己的个性模版方法
Jul 15 Python
Python递归及尾递归优化操作实例分析
Feb 01 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 Python
Python实现迪杰斯特拉算法并生成最短路径的示例代码
Dec 01 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
在Windows中安装Apache2和PHP4的权威指南
2006/10/09 PHP
Drupal读取Excel并导入数据库实例
2014/03/02 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
Symfony2学习笔记之模板用法详解
2016/03/17 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
jQuery实现点击标题输入详细信息
2013/04/16 Javascript
yepnope.js使用详解及示例分享
2014/06/23 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
2016/12/01 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
vue axios请求超时的正确处理方法
2018/04/02 Javascript
vue 实现边输入边搜索功能的实例讲解
2018/09/16 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
JS遍历JSON数组及获取JSON数组长度操作示例【测试可用】
2018/12/12 Javascript
玩转Koa之koa-router原理解析
2018/12/29 Javascript
vue-router命名视图的使用讲解
2019/01/19 Javascript
vue canvas绘制矩形并解决由clearRec带来的闪屏问题
2019/09/02 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
常用python编程模板汇总
2016/02/12 Python
Python selenium如何设置等待时间
2016/09/15 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
Python批量启动多线程代码实例
2020/02/18 Python
Python实现自动签到脚本功能
2020/08/20 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
详解KMP算法以及python如何实现
2020/09/18 Python
欧洲最大的化妆品连锁公司:Douglas道格拉斯
2017/05/06 全球购物
英国领先的独立酒精饮料零售商:DrinkSupermarket
2021/01/13 全球购物
我们的节日清明节活动总结
2014/04/30 职场文书
检查机关领导群众路线教育实践活动个人整改措施
2014/10/28 职场文书
教师岗位职责
2015/02/03 职场文书
学雷锋团日活动总结
2015/05/06 职场文书
2019广播稿怎么写
2019/04/17 职场文书
一文简单了解MySQL前缀索引
2022/04/03 MySQL