Python操作hdfs
Python直接操作hdfs,包括追加数据文件到hdfs文件
#!coding:utf-8
import sys
from hdfs.client import Client #设置utf-8模式
reload(sys)
sys.setdefaultencoding( "utf-8" ) #关于python操作hdfs的API可以查看官网:
#https://hdfscli.readthedocs.io/en/latest/api.html #读取hdfs文件内容,将每行存入数组返回
def read_hdfs_file(client,filename):
#with client.read('samples.csv', encoding='utf-8', delimiter='\n') as reader:
# for line in reader:
#pass
lines = []
with client.read(filename, encoding='utf-8', delimiter='\n') as reader:
for line in reader:
#pass
#print line.strip()
lines.append(line.strip())
return lines #创建目录
def mkdirs(client,hdfs_path) :
client.makedirs(hdfs_path) #删除hdfs文件
def delete_hdfs_file(client,hdfs_path):
client.delete(hdfs_path) #上传文件到hdfs
def put_to_hdfs(client,local_path,hdfs_path):
client.upload(hdfs_path, local_path,cleanup=True) #从hdfs获取文件到本地
def get_from_hdfs(client,hdfs_path,local_path):
download(hdfs_path, local_path, overwrite=False) #追加数据到hdfs文件
def append_to_hdfs(client,hdfs_path,data):
client.write(hdfs_path, data,overwrite=False,append=True) #覆盖数据写到hdfs文件
def write_to_hdfs(client,hdfs_path,data):
client.write(hdfs_path, data,overwrite=True,append=False) #移动或者修改文件
def move_or_rename(client,hdfs_src_path, hdfs_dst_path):
client.rename(hdfs_src_path, hdfs_dst_path) #返回目录下的文件
def list(client,hdfs_path):
return client.list(hdfs_path, status=False) #client = Client(url, root=None, proxy=None, timeout=None, session=None)
#client = Client("http://hadoop:50070") #move_or_rename(client,'/input/2.csv', '/input/emp.csv')
#read_hdfs_file(client,'/input/emp.csv')
#put_to_hdfs(client,'/home/shutong/hdfs/1.csv','/input/')
#append_to_hdfs(client,'/input/emp.csv','我爱你'+'\n')
#write_to_hdfs(client,'/input/emp.csv','我爱你'+'\n')
#read_hdfs_file(client,'/input/emp.csv')
#move_or_rename(client,'/input/emp.csv', '/input/2.csv')
#mkdirs(client,'/input/python')
#print list(client,'/input/')
#chown(client,'/input/1.csv', 'root')
Python操作hdfs的更多相关文章
- 使用python操作hdfs,并grep想要的数据
代码如下: import subprocess for day in range(24, 30): for h in range(0, 24): filename = "tls-metada ...
- hadoop 》》 django 简单操作hdfs 语句
>> from django.shortcuts import render # Create your views here. from hdfs.client import Clien ...
- 使用Python访问HDFS
最近接触到大数据,对于Skpark和Hadoop的料及都停留在第一次听到这个名词时去搜一把看看大概介绍免得跟不上时代的层次. 在实际读了点别人的代码,又自己写了一些之后,虽然谈不上理解加深,至少对于大 ...
- 2.如何使用python连接hdfs
总所周知,python是一门很强大的语言,主要在于它有着丰富的第三方模块,当然连接hdfs的模块也不例外. 在python中有一个模块也叫hdfs,可以使用它连接hadoop的hdfs.直接pip i ...
- 【转】Python 访问 HDFS
1.前言 hdfs , Hadoop Distributed File System.Hadoop的分布式文件系统,安全行和扩展性没得说. 访问HDFS的方式有以下几种: 命令行方式:FS Shell ...
- Python(九) Python 操作 MySQL 之 pysql 与 SQLAchemy
本文针对 Python 操作 MySQL 主要使用的两种方式讲解: 原生模块 pymsql ORM框架 SQLAchemy 本章内容: pymsql 执行 sql 增\删\改\查 语句 pymsql ...
- Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy
Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...
- 练习:python 操作Mysql 实现登录验证 用户权限管理
python 操作Mysql 实现登录验证 用户权限管理
- Python操作MySQL
本篇对于Python操作MySQL主要使用两种方式: 原生模块 pymsql ORM框架 SQLAchemy pymsql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb ...
随机推荐
- leetcode872
class Solution { public: vector<int> v1; vector<int> v2; void GetLeaf(TreeNode* tree, in ...
- “Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(Bundle)instead”
“Avoid non-default constructors in fragments: use a default constructor plus Fragment#setArguments(B ...
- SpringMVC的控制器接收前端数据的方式
1.请求处理方法中可以出现以下几种参数类型,直接在controller方法形参上定义默认类型的对象,就可以使用这些对象.可以通过下列对象来获取前台传来的参数: ①HttpServletRequest对 ...
- Eclipse右击jsp没有运行选项
maven项目低级错误,没有更新maven资源库.....更新后就运行起来了
- 599. Minimum Index Sum of Two Lists两个餐厅列表的索引和最小
[抄题]: Suppose Andy and Doris want to choose a restaurant for dinner, and they both have a list of fa ...
- lucene 第二天
Lucene/Solr 第二天 1. 课程计划 Lucene的Field Lucene的索引库维护 lucene的查询 a) Query子对象 b) QueryParser Lucene相关度排序 ...
- Linux oprofile命令
一.简介 oProfile是Linux平台上的一个功能强大的性能分析工具,支持两种采样(sampling)方式:基于事件的采样(eventbased)和基于时间的采样(timebased),它可以工作 ...
- 防止SQL注入方法总结
一.参数化SQL 是指在设计与数据库链接并访问数据时,在需要填入数值或数据的地方,使用参数 (Parameter) 来给值,用@来表示参数. 在使用参数化查询的情况下,数据库服务器不会将参数的内容视为 ...
- Jmeter跨线程组调用token
BeanShell PostProcessor使用 1.正则提取token后添加:后置处理器-->BeanShell PostProcessor 2.BeanShell PostProcesso ...
- [转]TimeQuest之delay_fall clock_fall傻傻分不清楚
这篇我想分享一个之前在用TimeQuest约束双边沿模块的input delay时犯得一个错误,有人看了可能会觉得傻傻的,什么眼神,falling delay和 falling clk怎么会分不清呢, ...