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使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
机器学习python实战之决策树
Nov 01 Python
详解Python中 sys.argv[]的用法简明解释
Dec 20 Python
python3+PyQt5实现自定义窗口部件Counters
Apr 20 Python
Python3离线安装Requests模块问题
Oct 13 Python
Python实现报警信息实时发送至邮箱功能(实例代码)
Nov 11 Python
python pygame实现球球大作战
Nov 25 Python
python2 对excel表格操作完整示例
Feb 23 Python
Django认证系统user对象实现过程解析
Mar 02 Python
Python的历史与优缺点整理
May 26 Python
基于python纯函数实现井字棋游戏
May 27 Python
基于Python实现的购物商城管理系统
Apr 27 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
苏联队长,苏联超人蝙蝠侠,这些登场的“山寨”英雄真的很严肃
2020/04/09 欧美动漫
php中的时间处理
2006/10/09 PHP
PHP7多线程搭建教程
2017/04/21 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
JavaScript中模拟实现jsonp
2015/06/19 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
跟我学习javascript的循环
2015/11/18 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
jQuery上传多张图片带进度条样式(DEMO)
2017/03/02 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
jQuery实现轮播图及其原理详解
2020/04/12 jQuery
解决vue-cli脚手架打包后vendor文件过大的问题
2018/09/27 Javascript
js实现简单五子棋游戏
2020/05/28 Javascript
js实现缓动动画
2020/11/25 Javascript
Python爬取成语接龙类网站
2018/10/19 Python
Python时间序列处理之ARIMA模型的使用讲解
2019/04/02 Python
selenium如何定位span元素的实现
2021/01/13 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
HTML5 客户端数据库简易使用:IndexedDB
2019/12/19 HTML / CSS
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
澳大利亚工具仓库:Tools Warehouse
2018/10/15 全球购物
ALDO美国官网:加拿大女鞋品牌
2018/12/28 全球购物
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
Tostadora意大利:定制T恤
2019/04/08 全球购物
十一酒店活动方案
2014/02/20 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
产品质量保证书范本
2015/02/27 职场文书
Python学习之os包使用教程详解
2022/03/21 Python
Vue+Flask实现图片传输功能
2022/04/01 Vue.js