利用python将excel文件转成txt文件,再将txt文件上传hdfs,最后传入hive中

news/2024/5/20 5:09:29 标签: python, hdfs, hive

hdfshive_0">将excel文件转成txt文件,再将txt文件上传hdfs,最后传入hive

注意的点
(1)先判断写入的txt文件是否存在,如果不存在就需要创建路径
(2)如果txt文件已经存在,那么先将对应的文件进行删除后再写入txt数据
(3)excel文件中有可能第一行是字段名,需要跳过
1.利用python将excel转成txt文件

from datetime import datetime, timedelta
import os
import pytz
import pandas as pd

def excel_to_txt(name, date):
    # Read Excel file into a DataFrame
    df = pd.read_excel(f'data/excel/{name}.xlsx', header=None, skiprows=1)

    # Define output directory and path
    output_directory = os.path.join('data', 'txt', date)
    os.makedirs(output_directory, exist_ok=True)  # Create directory if it doesn't exist
    output_path = os.path.join(output_directory, f'{name}.txt')

    # Check if the file already exists, if so, remove it
    if os.path.exists(output_path):
        os.remove(output_path)
        print(f'Existing file {output_path} removed.')

    # Write DataFrame to a new text file
    print('开始写入txt文件')
    df.to_csv(output_path, header=None, sep='\t', index=False)
    print('文件写入成功!')
    return output_path



if __name__ == '__main__':
    current_time = datetime.now(pytz.timezone('Asia/Shanghai'))
    one_day_ago = (current_time - timedelta(days=1)).strftime('%Y-%m-%d')
    local_file_path = excel_to_txt('IS_GS_Recruitment_Data_20231211', one_day_ago)
    print(local_file_path)

2.上传到hdfs
3.在hive中创建表

drop table if exists ticket.test_text;
create external table IF NOT EXISTS ticket.test_text
(
    name string,
    age int
) comment ''
      row format delimited fields terminated by '\t'
    lines terminated by '\n'
    NULL DEFINED AS ''
    stored as textfile
    LOCATION '/warehouse/ticket/ods/test_text';

4.将hdfs数据写入hive

load data inpath '/origin_data/test.txt' overwrite into table ticket.test_text;

http://www.niftyadmin.cn/n/5302737.html

相关文章

非常不错的SSH工具

Tabby 官网地址: Tabby - a terminal for a more modern age GitHub地址: GitHub - Eugeny/tabby: A terminal for a more modern age 使用说明: Xterminal 使用说明地址: 一款颜值、功能都很能打的 SSH 工具 官方地址&…

instanceof与多态性的对比,取款举例

通过 instanceof 判断每个账户对象是否是 SavingsAccount 或 CreditCardAccount 类型,然后进行相应的类型转换,并调用具体的 withdraw() 方法。虽然这样能够针对不同类型的账户执行不同的逻辑,但在面向对象设计原则中,更推荐使用多…

React实现简单登录

一 实现效果(样式是之前设置的) 二 具体实现代码 2.1 Login.js import {useNavigate} from "react-router-dom"; import React from "react"; // import ./style2.cssfunction Login(){const navigateuseNavigate()func…

Linux进程以及计划任务

一.程序和进程以及线程 内核功用:进程管理、内存管理、文件系统、网络功能、驱动程序、安全功能等 对于所有的操作系统,都有基本的功能 1.程序 保存在硬盘、光盘等介质中的可执行代码和数据(硬盘上躺着) 静态保存的代码 执行…

没有任何行为的XML

没有任何行为的 XML XML 是不作为的。 也许这有点难以理解&#xff0c;但是 XML 不会做任何事情。XML 被设计用来结构化、存储以及传输信息。 下面是 John 写给 George 的便签&#xff0c;存储为 XML&#xff1a; <note> <to>George</to> <from>Jo…

【观察】Aginode安捷诺:坚守“长期主义”,服务中国数字经济

毫无疑问&#xff0c;随着整个社会加速数字化转型&#xff0c;尤其是5G、人工智能、大数据等技术兴起&#xff0c;以及智慧医疗、智慧金融、智能制造等应用加速落地&#xff0c;算力网络在经济社会发展中扮演了愈来愈重要的角色&#xff0c;成为支撑数字经济蓬勃发展的“新引擎…

vue登录 滑动验证,记住密码及AES加密解密

相关依赖 npm install js-cookie //js-cookie npm install crypto-js //AES加密解密 npm install -S vue-puzzle-vcode //滑动验证 <template><div class"login"><div class"login-box"><!-- 标题 --><div class"img…

什么是跨域以及怎么处理跨域问题

文章目录 什么是跨域&#xff1f;跨域问题常见场景怎么处理跨域1、配置代理2、CORS&#xff08;跨域资源共享&#xff09;3、JSONP&#xff08;仅限 GET 请求&#xff09;4、使用 WebSocket 注意事项&#xff1a; 什么是跨域&#xff1f; 跨域&#xff08;Cross-Origin&#x…