IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 实习工作小结·批量下载文件和批量写入elasticsearch -> 正文阅读

[大数据]实习工作小结·批量下载文件和批量写入elasticsearch

工作流程大致是先将文件下载下来,然后再解压。解压后的文件后缀是.xml,于是需要通过xml解析库解析出需要的数据,然后格式规整地写入elasticsearch。

首先,数据下载的网站地url是这样的:http://ftp.ncbi.nlm.nih.gov/pubmed/baseline/

这个目录下的文件名称格式也很整齐:pubmed22nXXXX.xml.gz,其中XXXX是他的编号,观察了下从1到1114为止。至此,我们的下载链接便是http://ftp.ncbi.nlm.nih.gov/pubmed/baseline/pubmed22nXXXX.xml.gz于是可以写出如下的for循环以得到我们需要的列表:

    address = []
    path1 = "pubmed22n"
    path2 = ".xml.gz"
    path = ''
    for i in range(408, 1115):
        if 0 < i <= 9:
            path = path1 + '000' + str(i) +path2
            address.append(path)
        elif 10 <= i <= 99:
            path = path1 + '00' + str(i) + path2
            address.append(path)
        elif 100 <= i <= 999:
            path = path1 + '0' + str(i) + path2
            address.append(path)
        else:
            path = path1 + str(i) + path2
            address.append(path)

至此,所有的文件的下载地址都放在了address列表之中。接着就是下载的步骤了,我们使用wget下载,然后用gzip命令进行解压,同时用logging库输出log,来告知我们下载到了哪个文件了。代码如下:

    logging.basicConfig()
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.INFO)

    # process the file
    for add in address:
        root_url = "http://ftp.ncbi.nlm.nih.gov/pubmed/baseline/"

        # download datas
        # print(f"{root_url}{add}")
        wget.download(f"{root_url}{add}")
        os.system("gunzip -d " + add)

        # load datas
        data = get_data(add)
        write_data(data)
        logger.info(add + f" finished!")

接着便是写入过程,我在先前的博客《近阶段学习和实习的小结(git、docker和elasticsearch的使用)》icon-default.png?t=M276https://blog.csdn.net/qq_41938259/article/details/123632158?spm=1001.2014.3001.5501中已经给出了get_data和write_data的具体实现了,这里不再赘述。

今天就写到这儿。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-04-01 23:28:20  更:2022-04-01 23:32:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/20 15:21:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码