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之通过Python连接数据库
Oct 28 Python
Python使用chardet判断字符编码
May 09 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
Python中偏函数用法示例
Jun 07 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
python实现对列表中的元素进行倒序打印
Nov 23 Python
Python tkinter 下拉日历控件代码
Mar 04 Python
python实现井字棋小游戏
Mar 04 Python
.img/.hdr格式转.nii格式的操作
Jul 01 Python
Python Tkinter实例——模拟掷骰子
Oct 24 Python
Python序列化模块JSON与Pickle
Jun 05 Python
Django框架中模型的用法
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
合作指挥官:孟斯克
2020/03/16 星际争霸
PHP面向对象编程快速入门
2006/12/14 PHP
PHP 开源AJAX框架14种
2009/08/24 PHP
php 指定范围内多个随机数代码实例
2016/07/18 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
javascript跨浏览器的属性判断方法
2014/03/16 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
JS使用百度地图API自动获取地址和经纬度操作示例
2019/04/16 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
JavaScript禁止右击保存图片,禁止拖拽图片的实现代码
2020/04/28 Javascript
Python爬取读者并制作成PDF
2015/03/10 Python
python获取多线程及子线程的返回值
2017/11/15 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
Python计算库numpy进行方差/标准方差/样本标准方差/协方差的计算
2018/12/28 Python
python下载微信公众号相关文章
2019/02/26 Python
ipython和python区别详解
2019/06/26 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
Django-rest-framework中过滤器的定制实例
2020/04/01 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
Farfetch香港官网:汇集全球时尚奢侈品购物平台
2017/11/26 全球购物
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
如何利用find命令查找文件
2015/02/07 面试题
感恩母亲节活动方案
2014/03/04 职场文书
电子商务专业毕业生自荐书
2014/06/22 职场文书
安全例会汇报材料
2014/08/23 职场文书
护士先进个人总结
2015/02/13 职场文书
2015年音乐教研组工作总结
2015/07/22 职场文书
同学会感言
2015/07/30 职场文书
幼儿园教师心得体会范文
2016/01/21 职场文书
MySQL高速缓存启动方法及参数详解(query_cache_size)
2021/07/01 MySQL