hdfs webhdfs 写文件(create file)

# _*_ coding=utf-8 _*_

import sys
import os

hosts = {}
cmd1 = ‘‘‘
curl -i -X PUT "http://%s:50070/webhdfs/v1%s?op=CREATE&user.name=op&overwrite=true&replication=3" | grep Location | awk -F ‘ ‘ ‘{print $2}‘
‘‘‘
cmd2 = ‘‘‘
curl -i -X PUT -T %s %s
‘‘‘

def put_file_to_hdfs(hostname, local_file, hdfs_path):
    try:
        # 组装hdfs要写入文件路径
        splits = local_file.split(r"/")
        sub_local_file = splits[len(splits) - 1]
        hdfs_path = hdfs_path + ‘/‘ + sub_local_file
        # 组装url1获得datanode url
        cmd3 = cmd1 % (hostname, hdfs_path)
        process = os.popen(cmd3)
        http_sub = process.read().strip()
        # 组装url2准备写文件
        cmd4 = cmd2 % (local_file, ‘"‘ + http_sub + ‘"‘)
        status = os.system(cmd4)
        if status == 0:
            print ‘put %s successfully.‘ % (local_file)
        else:
            print ‘put %s fail.‘ % (local_file)
    except Exception as e:
        print local_file, e
    finally:
        if process:
            process.close()

if __name__ == ‘__main__‘:
    local_file = sys.argv[1]
    datekey = sys.argv[2]
    hdfs_path = ‘/user/log/‘ + datekey
    webhdfs_host = ‘192.168.254.43‘
    put_file_to_hdfs(webhdfs_host, local_file, hdfs_path)

原文地址:https://www.cnblogs.com/jiangxiaoxian/p/9987352.html

时间: 2024-10-22 08:39:22

hdfs webhdfs 写文件(create file)的相关文章

HDFS写文件过程分析

转自http://shiyanjun.cn/archives/942.html HDFS是一个分布式文件系统,在HDFS上写文件的过程与我们平时使用的单机文件系统非常不同,从宏观上来看,在HDFS文件系统上创建并写一个文件,流程如下图(来自<Hadoop:The Definitive Guide>一书)所示:具体过程描述如下: Client调用DistributedFileSystem对象的create方法,创建一个文件输出流(FSDataOutputStream)对象 通过Distribut

HDFS写文件解析

client通过DistributedFileSystem对象调用create()方法创建文件,实际上通过RPC调用了NameNode的方法. NameNode收到client的请求之后,执行各种检查(1.确认要传文件目前在HDFS上不存在,2.client具有写的权限)如果通过则会为新文件创建一条记录,并返回一个FSDataOutputStream对象,该对象负责DataNode和NameNode通讯.若检查未通过则抛出IOException. 客户端拿到流后,进行文件写入.stream会将数

尝试打开或创建物理文件时,CREATE FILE 遇到操作系统错误 5

执行 Transact-SQL 语句或批处理时发生了异常. (Microsoft.SqlServer.ConnectionInfo)尝试打开或创建物理文件时,CREATE FILE 遇到操作系统错误 5(拒绝访问.) 解决方法:设置源文件的安全属性为当前用户可以访问的权限.(属性-安全)

Navicat for MySQL 新建查询时,报can&#39;t create file ...系统找不到指定的文件夹出现问题

如图点击新建查询报错 解决办法 将这个路径修改一下就ok了 Navicat for MySQL 新建查询时,报can't create file ...系统找不到指定的文件夹出现问题 原文地址:https://www.cnblogs.com/perfei456/p/8576944.html

Hadoop之HDFS原理及文件上传下载源码分析(上)

HDFS原理 首先说明下,hadoop的各种搭建方式不再介绍,相信各位玩hadoop的同学随便都能搭出来. 楼主的环境: 操作系统:Ubuntu 15.10 hadoop版本:2.7.3 HA:否(随便搭了个伪分布式) 文件上传 下图描述了Client向HDFS上传一个200M大小的日志文件的大致过程: 首先,Client发起文件上传请求,即通过RPC与NameNode建立通讯. NameNode与各DataNode使用心跳机制来获取DataNode信息.NameNode收到Client请求后,

Eclipse 上传 删除 下载 分析 hdfs 上的文件

本篇讲解如何通过Eclipse 编写代码去操作分析hdfs 上的文件. 1.在eclipse 下新建Map/Reduce Project项目.如图:  项目建好后,会默认加载一系列相应的jar包. 下面还有很多包. 2.我们新建Java 类就可以了.代码如下: package org.hadoop.examples; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOExcep

大数据【二】HDFS部署及文件读写(包含eclipse hadoop配置)

一 原理阐述 1' DFS 分布式文件系统(即DFS,Distributed File System),指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连.该系统架构于网络之上,势必会引入网络编程的复杂性,因此分布式文件系统比普通磁盘文件系统更为复杂. 2' HDFS 借此,关于GFS和HDFS的区别与联系查看 我于博客园找到的前辈的博客>>http://www.cnblogs.com/liango/p/7136448.html HDFS(Hadoop Dis

Hadoop HDFS (3) JAVA访问HDFS之二 文件分布式读写策略

先把上节未完成的部分补全,再剖析一下HDFS读写文件的内部原理 列举文件 FileSystem(org.apache.hadoop.fs.FileSystem)的listStatus()方法可以列出一个目录下的内容. public FileStatus[] listStatus(Path f) throws FileNotFoundException, IOException; public FileStatus[] listStatus(Path[] files) throws FileNot

cocos2d-x3.0 用CCDictionary写文件

bool CDownLoad_LocalData::WriteToConfigFile( DownLoadLocalData* downdata ){ CCDictionary* pDict = CCDictionary::create(); unsigned int lessonid = downdata->lession_id;char s_lessonid[10];sprintf(s_lessonid,"%d",lessonid); CCString* pValue1 =