python 读取hadoop数据并重现上传

python hdfs远程连接以及上传文件,读取文件内容,删除文件 python hdfs远程连接以及上传,读取,删除文件 阅读详情
download.py:
# -*-coding:utf-8-*-
import os
import time
import utils
import configparser
import pyhdfs
def load_conf():
    print("加载配置文件")
    cf = configparser.ConfigParser()
    cf.read("z.conf", encoding="UTF-8")
    secs = cf.sections()
    if len(secs) == 0:
        raise TypeError("配置文件无效")
    print("配置文件已加载")
    print("解析配置文件")
    conf_dict_list = [dict()]
    for x in range(len(conf_dict_list)):
        sec = secs[x]
        ops_list = cf.options(sec)
        for ops in ops_list:
            conf_dict_list[x][ops] = cf.get(sec, ops)
    print("配置文件解析成功")
    return conf_dict_list[0]
def download_file(hdfs_ip, hdfs_port, hdfs_user, data_path, t_our_suffix, num_day, download_path,hdfs_temp_file_path,download_file_path):
    count = 0
    print("在根目录:" + data_path + "中扫描需要处理的文件夹")
    # 名称获得需要处理时间的数据
    time_dir_name_list = utils.get_time_list(num_day)
    print("需要处理的日期是:" + ",".join(time_dir_name_list))
    hdfs_client = pyhdfs.HdfsClient(hdfs_ip, hdfs_port, hdfs_user)
    #返回指定的文件夹包含的文件或文件夹的名字的列表
    dirs = hdfs_client.listdir(data_path)
    for d_name in dirs:
        t_path = data_path + '/' + d_name
        # 是否为目录
        if hdfs_client.get_file_status(t_path).type != "DIRECTORY":
            continue
        if d_name not in time_dir_name_list:
            continue
        # 扫描文件夹下的文件
        files = hdfs_client.listdir(t_path)
        for file_name in files:
            file_path = t_path + "/" + file_name
            # 是否以需要处理的后缀名结尾
            if not file_name.endswith(t_our_suffix):
                continue
            # 是否为文件
            if hdfs_client.get_file_status(file_path).type != "FILE":
                continue
            print("下载文件:" + file_path)
            _, shot_name, extension = utils.get_file_path_file_name_file_ext(file_path)
            # 下载文件
            local_d_name = str(d_name).replace('-', '')
            local_file_paths = download_path + "/" + local_d_name
            if not os.path.exists(local_file_paths):
                os.mkdir(local_file_paths)
            local_file_path = local_file_paths + "/" + file_name
            print("将hadoop文件下载到本地")
            hdfs_client.copy_to_local(file_path, local_file_path, overwrite=True)
            # 读取本地文件处理分类重新上传
            try:
                f = open(local_file_path, "r", encoding="UTF-8")
                lines = f.readlines()
                url = os.path.basename(local_file_path)
                li = url.split('_')
            except Exception:
                # 文件读取失败
                print('我失败了。。。。。')
                # 去掉\n
            temp_lines_list = [x.strip() for x in lines]
            if len(temp_lines_list) < 2:
                # 行数不够,不进行处理
                print('行数太短了。。。。。。')
            # 去掉空行
            for i in temp_lines_list:
                now_title = i.split("|")
                while now_title:
                    if now_title[8] == 'cqzb':
                        path = os.path.join(download_file_path, now_title[8])
                        if not os.path.exists(path):
                            os.mkdir(path)
                        time_path = os.path.join(path, str(li[0][:4] + '-' + li[0][4:6] + '-' + li[0][6:8]))
                        if not os.path.exists(time_path):
                            os.mkdir(time_path)
                        print(time_path)
                        urls = time_path + '/' + str(
                            li[0] + '_' + li[1] + '_' + str(now_title[8]) + '_' + li[3] + '_' + li[4])
                        with open(urls, 'a', encoding='utf-8')as f:
                            f.write(i + '\n')
                        break
                    elif now_title[8] == 'hnzb':
                        path = os.path.join(download_file_path, now_title[8])
                        if not os.path.exists(path):
                            os.mkdir(path)
                        time_path = os.path.join(path, str(li[0][:4] + '-' + li[0][4:6] + '-' + li[0][6:8]))
                        if not os.path.exists(time_path):
                            os.mkdir(time_path)
                        print(time_path)
                        urls = time_path + '/' + str(
                            li[0] + '_' + li[1] + '_' + str(now_title[8]) + '_' + li[3] + '_' + li[4])
                        with open(urls, 'a', encoding='utf-8')as f:
                            f.write(i + '\n')
                        break
                    else:
                        break
                    f.close()
            print('开始将文件上传到hadoop')
            try:
                hdfs_client.copy_from_local(local_temp_file_path, hdfs_temp_file_path, cleanup=True)
            except Exception as e:
                print(e)
            hdfs_temp_file_path=os.path.join(hdfs_temp_file_path,str(li[0][:4] + '-' + li[0][4:6] + '-' + li[0][6:8]))
            print(local_temp_file_path, hdfs_temp_file_path)
            print(file_path, local_file_path)
            print('文件上传hadoop完毕,继续下一步操作。。。。')
            print("将Hadoop中下载完成的文件更改为processed文件防止重复处理")
            hdfs_our_origin_temp_file_path = t_path + "/" + shot_name + our_suffix + "_processed"
            hdfs_client.rename(file_path, hdfs_our_origin_temp_file_path)
            print(file_path, hdfs_our_origin_temp_file_path)
            count += 1
    return count
if __name__ == '__main__':
    # 加载模型
    print("启动程序")
    base_dict = load_conf()
    our_suffix = base_dict["our_suffix"]
    num_day = int(base_dict["num_day"])
    hdfs_ip = base_dict["hdfs_ip"]
    hdfs_port = int(base_dict["hdfs_port"])
    hdfs_user = base_dict["hdfs_user"]
    hdfs_data_path = base_dict["hdfs_data_path"]
    download_path = base_dict["download_path"]
    sleep_time = int(base_dict["sleep_time"])
    hdfs_temp_file_path=base_dict["hdfs_temp_file_path"]
    download_file_path=base_dict["download_file_path"]
    while True:
        start_time = time.time()
        print("新流程开始...")
        count = download_file(hdfs_ip, hdfs_port, hdfs_user, hdfs_data_path, our_suffix, num_day, download_path,hdfs_temp_file_path,download_file_path)
        if count > 0:
            print("此次流程处理了" + str(count) + "个文件,共用时" + str(time.time() - start_time) + "秒。")
        else:
            print("此次流程没有处理文件。")
        print("进入睡眠,睡眠时间为" + str(sleep_time) + "秒,等待下一个流程。")
time.sleep(sleep_time)

z.conf:

[base]
#睡眠时间,秒为单位
sleep_time=30
our_suffix=.out
hdfs_ip=127.0.0.1
hdfs_port=8080
hdfs_user=yuqing
hdfs_data_path=
num_day=1
download_path=
hdfs_temp_file_path=
download_file_path=


Python实战,Hadoop开发环境,如何分析处理大数据 Python与Hadoop的结合为大数据处理与分析提供了强大的工具。Python的灵活性和丰富的库使得数据处理和分析变得更加高效和便捷,而Hadoop的分布式计算能力则使得处理大规模数据集成为可能。未来,随着大数据技术的不断发展,Python和Hadoop将在更多领域得到应用。同时,我们也需要关注新技术和新工具的出现,如Flink、Kafka等实时数据处理框架,以及深度学习、机器学习等人工智能技术在大数据分析中的应用。这些新技术和工具将进一步推动大数据处理与分析领域的发展和创新。 阅读详情

相关推荐

07.Python pyhdfs 连接 HADOOP 基本命令

1.pyhdfs连接上 Hadoop 1)使用 pyhdfs ,pip install pyhdfs 2)client = pyhdfs.HdfsClient(hosts="139.********",timeout=60,max_tries=5) 参数详解: 坑:连接的时候会碰到权限问题:修改 节点上的 hdfs-site.xml 权限问题 &lt...

weixin_42210772的博客 974

python数据处理之批量下载

在这个代码中,我们首先将所有下载链接分成4组,并为每组创建一个线程,使用 threading.Lock() 创建一个锁,以避免多个线程同时访问错误链接列表时出现冲突。在 download_thread() 函数中,每个线程依次处理自己的链接列表,下载完成后将错误链接加入到共享的错误链接列表中。在主线程中,我们等待所有线程都执行完毕后,将错误链接保存到文件中。在Python中,可以使用threading模块创建多个线程来同时执行下载任务。采用多线程的方式来提高下载速度。

浩无奈的博客 2732

python 如何将传统关系数据库的数据导入 Hadoop

使用 Sqoop 工具:Sqoop是Hadoop中的一个开源工具,它可以将关系型数据库中的数据导入到Hadoop中,支持多种关系型数据库,如MySQL、Oracle、SQL Server等。使用 Python 数据库连接库:Python有多种数据库连接库,如pymysql、psycopg2等,可以通过这些库连接到关系型数据库,并查询和导出数据。需要注意的是,将关系型数据库中的数据导入到Hadoop中,需要根据实际情况进行调整,如选择合适的数据格式、数据分区和数据存储方式等。

zhangzhechun的专栏 724

将某一文件夹下的部分文件移动到文件夹

目的:将一个文件夹下的部分文件夹(在txt文件夹里)移动到另一文件夹 txt文件夹如下: 代码: import os import shutil txt_path = '/home/zhaotongdong/桌面/unnormal.txt' img_path = '/home/zhaotongdong/goole_download/mmdetection/normal_predic_false_1/' new_path = '/home/zhaotongdong/goole_download/mmde

AWhiteDongDong的博客 579

erdas监督分类(二)

去云 用一张没有云的影像替代有云影像 构建aoi图层 将云和云影编码合并 重编码工作 在监督分类做的差不多以后(纠正无误,无明显错误),就要对监督分类图像进行重编码和颜色调整。 在中选中Recode,对原来分类的地物类别进行重编码,(为彻底修改,记得备份)选中一列,在New Value输入新的编码,依次编码后点击应用apply,即可实现。 这时的图像如果是全黑的或者只有一两类的颜色也没有关系,新的编码覆盖掉了原来的编码,但是颜色并没有改变才会这样。可以点击图像,右击...

weixin_58968530的博客 958

车载LIN总线避坑指南:主从节点通信失败的5个常见原因及解决方案

本文深度解析车载LIN总线主从节点通信失败的五大常见原因,涵盖物理层信号异常、调度表冲突、LDF配置错误、节点状态机缺陷及环境干扰。重点剖析了LDF文件配置不一致、波特率不匹配等关键问题,并提供了从示波器波形分析到软件配置检查的完整实战排查路径,帮助工程师高效定位并解决LIN通信故障。

g9h0i1的博客 1248

python爬虫部署hadoop_让python代码在hadoop上运行

使用Python编写MapRecuce代码的技巧就在于我们使用了Hadoop streaming来帮助我们在map和reduce之间传递数据通过stdin和stdout,我们仅仅使用Python的sys.stdin来输入数据,使用Python的sys.stdout来输出数据,其他的streaming都会帮我们做好。别不信这一点!首先创建map和reduce处理程序,用python实现。mapper...

weixin_35049095的博客 920

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?这是一个让许多开发者都感到困扰的问题。本文将介绍如何使用FPGA设计和实现...

【使用FPGA实现MIPI DSI接口】——如何使用FPGA实现MIPI DSI接口?MIPI DSI(移动产业处理器接口 - 显示串行接口)是一种用于在移动设备中传输视频数据的标准接口,它是目前大部分智能手机和平板电脑所采用的显示接口。首先,我们需要实现MIPI DSI的物理层接口。在实现MIPI DSI接口后,我们还需要编写驱动程序来控制MIPI DSI显示屏显示图像。这里只是提供了MIPI DSI接口的物理层代码示例,完整的MIPI DSI接口实现需要包括控制器和驱动程序等更多内容。

uote_e的博客 1995

Python使用Hadoop进行文件上传与读取详解

在大数据处理领域,Hadoop凭借其分布式存储和计算能力成为核心工具之一。Hadoop的分布式文件系统(HDFS)为海量数据存储提供了高可靠性和高吞吐量的支持。Python作为一门灵活且强大的编程语言,通过多种库(如`pyhdfs`、`hdfs`、`pydoop`等)实现了与HDFS的高效交互。本文将详细介绍如何在Python中使用Hadoop进行文件上传和读取操作,涵盖常用库的安装、核心功能实现及常见问题解决方案。

专注于与编程相关的知识内容分享 670

SIMULINK开发项目实例 1000 例专栏之第802例--基于电机驱动系统的场景实例:永磁同步电机(PMSM)在电动汽车中的矢量控制仿真

随着全球对环境保护的关注增加,电动汽车(Electric Vehicle, EV)因其环保特性而受到广泛关注。永磁同步电机(Permanent Magnet Synchronous Motor, PMSM)由于其高效率、高功率密度和良好的动态响应性能,在电动汽车驱动系统中得到了广泛应用。矢量控制(Field-Oriented Control, FOC)是实现PMSM高性能控制的关键技术之一,它能够实现对电机转矩和磁场的独立控制,从而达到类似直流电机的控制效果。本文将详细介绍如何使用来构建一个。

xiaoheshang_123的博客 267

PCIe-Orders set Blocks之symbol对齐

有序集的使用场合很多,如在链路link阶段,进入polling后,便开始有序集的发送。一个 Ordered Set Block 包含一个同步头,后跟一个有序集。多通道链路的所有 Lane 必须同时传输相同的有序集,而且有序集的第一个符号定义了有序集的类型。但在PCIE中,8GT/s及以上的速率,采用的是128b/130b编码。128-bit是想要传输的payload,实际会传输130-bit,多出来的2-bit就是sync header。Block有两种,通过Sync header区分:10b:表示data

weixin_44700185的博客 813

python读hadoop_python读取hdfs并返回dataframe教程

不多说,直接上代码from hdfs import Clientimport pandas as pdHDFSHOST = "http://xxx:50070"FILENAME = "/tmp/preprocess/part-00000" #hdfs文件路径COLUMNNAMES = [xx']def readHDFS():'''读取hdfs文件Returns:df:dataframe hdfs数...

weixin_39747595的博客 519

eCognition易康操作教程(二):多尺度分割基于多光谱数据构建规则集,结合DSM高程数据提取建筑物、树木和绿地

一、数据 数据来源:教程中的实验数据,共包含RGB三个波段,还有数字地表模型(以下简称DSM)文件。 图一 RGB影像 数据特征:数据范围较小,要素种类少,仅包含较多的建筑和大片的绿地。由于建筑的房顶使用的材料和材料颜色不同,所以建筑的光谱特征没有规律,是不连续的特征。而绿地的光谱特征则十分容易分辨。 但是建筑通常具有规则的形状,而且建筑相比于周围其他要素...

蒹葭苍苍 8302

python读取hdfs并返回dataframe教程

更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com/ 不多说,直接上代码 from hdfs import Client import pandas as pd HDFSHOST = “http://xxx:50070” FILENAME = “/tmp/preprocess/part-00000” #

菜鸟教程 1468

怎么调用onenet平台的API从而读取我们的设备数据和下发命令,做到控制开关

怎么调用onenet平台的API从而读取我们的设备数据和下发命令,做到控制开关 1、首先是怎么读取数据 读取的API是:http://api.heclouds.com/devices/datapoints?devIds=629063002 其中devids这个指的是你的设备ID 然后在我们的headers里面添加一些必要参数,就可以调用了 其中api-key的是你产品里面的master-apikey 把我们的参数写好就可以调用了,选择get方式,点击发送 这个value就是我们需要获取到的参数值了,

zyh960的博客 2万+

“华为杯”研究生数学建模竞赛2020年-【华为杯】E题:能见度估计与预测(附获奖论文及python代码实现)

因此,题目要求借助机场的 AMOS 观测数据中的气压、温度、湿度、风速等气象因子,达到 100% 时,空气中的水汽便会凝结成细微的水滴悬浮于空中,使地面水平的能见度下。传统的仪器探测法成本高,覆盖范围小,而基于视频的能见度检测能弥补仪器测量的不足之处,但是预测精度不高,需要进一步改。象条件,空气质量的影响,其中较为关键的影响因子是雾和霾。性过强,激光能见度仪的检测方法更为可信,但是激光能见度仪覆盖的检测范围小,安装。覆盖的交通视频路况数据间接计算得到能见度数值的方法,此方法成本较低,覆盖范围广。

getusushu的博客 2280

大数据编程实验一:HDFS常用操作和Spark读取文件系统数据

大数据编程实验,利用本地搭建的伪分布式集群进行HDFS常用操作和Spark读取文件系统数据的操作。

北天的博客 7268

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python读取hdfs数据

加载包 from hdfs.client import Client class Process_Data_Hdfs(): def __init__(self): self.client = Client("http://hadoop1:50070") self.filename = "/user/hdfs/read.txt" 读取hdfs文件内容,将...

dltan 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Python对Hadoop数据进行读写

首先需要借用第三方库pyhdfs 创建一个Hadoop连接对象 hdfs_client = pyhdfs.HdfsClient(hdfs_ip,hdfs_port,hdfs_user)。 hdfs_ip:ip地址;hdfs_port:端口;hdfs_user:用户名 还需要知道文件路径,比如:/hdoopTest/orderTest/xx.txt。 查看文件时使用的方法: hdfs_client.listdir(‘/hdoopTest/orderTest’) 将文件拉到本地: hdfs.cl

Mr_zhangjx的博客 1211

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

python与hadoop/hdfs的交互,读取文件/下载/上传/删除

文章目录1.用 python 运行 command2.hdfs的相关命令ls:返回文件或目录的信息get:下载文件到本地put:从本地文件系统中复制单个或多个源路径到目标文件系统。也支持从标准输入中读取输入写入目标文件系统。copyFromLocal:限定从hdfs复制到本地copyToLocal:限定从本地复制到hdfsrm:删除hdfs上的文件,只删除非空目录和文件rm -r:递归删除hdfs上的文件,会删除目录test + 参数:检查文件是否存在 1.用 python 运行 command # imp

哪惧明天,风高路斜 3301

python 读取parquet文件并显示数据

Python相关视频讲解:python的or运算赋值用法用python编程Excel有没有用处?011_编程到底好玩在哪?查看python文件_输出py文件_cat_运行python文件_shel用Python读取Parquet文件并显示数据 Parquet是一种列式存储格式,它被广泛应用于大数据处理中,特别是在Ap...

weixin_27058835的博客 1321

Hadoop操作HDFS的相关命令(python)

Hadoop操作HDFS的相关命令 本文是基于CentOS 7系统环境,搭建Hadoop集群环境,并在主节点上进行测试 CentOS 7 hadoop-2.7.1 一、Hadoop相关命令 (1) 查看HDFS的文件结构 hadoop fs -lsr / (2) 新建文件夹 hadoop fs -mkdir /test_xz/input (3) 上传本地文件到HDFS hado...

哈工大许政的博客 2万+

python读取hadoop库数据_使用Python访问HDFS

最近接触到大数据,对于Skpark和Hadoop的料及都停留在第一次听到这个名词时去搜一把看看大概介绍免得跟不上时代的层次。在实际读了点别人的代码,又自己写了一些之后,虽然谈不上理解加深,至少对于大数据技术的整体布局有了更清晰的认识。HDFS主要用来存储文件系统,虽然Spark有自己的RDD,但是似乎并未被启用。我需要的数据,是通过Spark服务启动的计算程序,写入HDFS中的。#这结构怎么看都感...

weixin_39715834的博客 615

python读取hadoop文件_python读取hdfs并返回dataframe

不多说,直接上代码from hdfs import Clientimport pandas as pdFILENAME = "/tmp/preprocess/part-00000" #hdfs文件路径COLUMNNAMES = [xx']def readHDFS():'''读取hdfs文件Returns:df:dataframe hdfs数据'''client = Client(HDFSHOST)...

weixin_42499692的博客 1116

hadoop学习笔记:使用Python写Hadoop MapReduce程序

用python写MapReduce函数——以WordCount为例

weixin_41555165的博客 1813

如何python安装hadoop_使用Python操作Hadoop,Python-MapReduce

环境环境使用:hadoop3.1,Python3.6,ubuntu18.04Hadoop是使用Java开发的,推荐使用Java操作HDFS。有时候也需要我们使用Python操作HDFS。本次我们来讨论如何使用Python操作HDFS,进行文件上传,下载,查看文件夹,以及如何使用Python进行MapReduce编程。使用Python操作HDFS首先需要安装和导入hdfs库,使用pip instal...

weixin_39980184的博客 869
上一篇: python 读取文件夹下的所有文件并处理重新分类写入
下一篇: Linux(centos7)下Zookeeper的(单机)安装与简单测试
唐僧不爱八戒
博客等级 码龄9年 158粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值