hive 之 将excel数据导入hive中 : excel 转 txt

摘要:
例如,忽略第1行和第9行中的数据:skirows=[1,9]skip_Footer0忽略数据4的最后n行。实现代码:excel_to_txt.py#!/user/binevpythonimportpandasaspdimportsysdefexcel_to_txt:df=pd.read_Excel#使用panda模块读取数据。标题默认为0并指定标题行。无:不将标题printdf.to _ Csv#写入txt,制表符分隔打印('文件写入成功!

一、需求:

1、客户每月上传固定格式的excel文件到指定目录。每月上传的文件名只有结尾月份不同,如: 10月文件名:  zhongdiangedan202010.xlsx  , 11月文件名: zhongdiangedan202011.xlsx 

2、将上传的excel文件导入hive中,在做进一步数据分析。

二、思路:

  1、通过python的pandas模块将excel文件转换为txt文件;

  2、编写shell脚本,使用 hdfs dfs -put 将txt文件导入指定表(方便每月执行)。

三、pandas.read_excel 包:

def read_excel(io,sheet_name=0,header=0,names=None,index_col=None,usecols=None,squeeze=False,dtype=None,engine=None,converters=None,true_values=None,false_values=None,skiprows=None,nrows=None,na_values=None,keep_default_na=True,na_filter=True,verbose=False,parse_dates=False,date_parser=None,thousands=None,comment=None,skipfooter=0,convert_float=True,mangle_dupe_cols=True)

常用属性字段说明,如下:

属性字段默认字段含义
io无,必选excel文件路径
sheetname0取第一个sheet的内容;取多个sheet内容:sheetname=[0,1];取全表:sheetname=None
header0指定为表头的行,取第一行为表头 header = 0;无表头:header = None;
namesNone提取指定列名的数据
index_colNone指定多少列为索引列,或指定对应列名为索引列。
usecolsNone指定要取的列,None:取所有列;只能是列表。注:使用次属性,sheet_name 也必须使用。
skiprows0忽略(不取)指定行数的数据,行数为列表形式。如,忽略第1行,第9行数据: skiprows=[1,9]
skip_footer0忽略倒数n行数据

 

四、实现代码:

excel_to_txt.py

#!/user/bin env python
import pandas as pd
import sys
def excel_to_txt(monthNo):
    df = pd.read_excel('/data/excelfile/zhongdiangedan%s.xlsx'%(monthNo),header=None)  # 使用pandas模块读取数据, header 默认0,指定表头行,None:不取表头
    print('开始写入txt文件')
    df.to_csv('/data/txtlfile/zhongdiangedan%s.txt'%(monthNo), header=None, sep='	', index=False)        # 写入txt中,tab分隔
    print('文件写入成功!')

if __name__ == '__main__':
      monthNo=sys.argv[1]
    excel_to_txt(monthNo)

执行python: python excel_to_txt.py 202010

 

建表:

create table impt_excel_data_zhongdiangedan(
col1 string,
col2 string,
col3 string,
col4 string,
col5 string,
col6 string
)partitioned by (month_id string)
row format delimited fields terminated by '	'
lines terminated by '
'
stored as textfile
location '/data/hive/database_name/impt/impt_excel_data_zhongdiangedan';

 

txt_to_hive.sh

#!/bin/bash
monthNo=$1
hive -e"
        use database_name; -- 指定数据库 database_name
        alter table tmp_content_zhongdiangedan drop if exists partition (month_id=$monthNo); -- 删除分区
        alter table tmp_content_zhongdiangedan add partition (month_id=$monthNo); -- 添加分区
"
# 导入数据
hdfs dfs -put /data/txtlfile/zhongdiangedan$monthNo.txt /data/hive/database_name/impt/impt_excel_data_zhongdiangedan/month_id=$monthNo

执行shell: sh txt_to_hive.sh 202010

 

免责声明:文章转载自《hive 之 将excel数据导入hive中 : excel 转 txt》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Database】MySQL各版本的区别mysql复制表和表结构下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JMeter测试需要上传excel的接口

JMeter测试需要上传excel的接口 例如:测试商品【导入排序】的功能 一、上传1个excel文件 1.HTTP信息头管理器   设置 放抓包获取的必要参数 不要放 RequestHeaders中的content-type: multipart/form-data; boundary=----WebKitFormBoundaryZ4GDuK56kYNZ...

第07组(69) 需求分析报告

1.团队基本情况 1.1团队项目整体计划安排 项目分工表 工种 组员 任务 统筹 陈晟新 考察任务进度,负责人员调度,后端研究 美工 李佳乐 UI设计,原型设计,细化用户需求 测试 孙晴晴 测试方案制定,评测测试系统 服务器 吴洁颖 研究服务器方面的需求 网页 陈小楚,何文龙 网页的制作,交互的实现 算法 傅智鑫,王璐 酷转的...

java基于xml配置的通用excel单表数据导入组件(一、实际应用过程)

主要应用技术:poi + betwixt + reflect 一、实际应用过程 1.创建与目标表结构一样,表名为‘{目标表名}_import’的临时表; 2.创建用于存储导入问题数据的表:t_import_error (只需创建一张); Name Code Data Type Length Precision Mandatory Primary Iden...

NPOI 导出Excel插入图片、设置边框样式、合并单元格、字体样式等小知识

1.设置单元格上边框为黑色实线 ICellStyle cellStyleTail = sheet.Workbook.CreateCellStyle(); cellStyleTail.BorderTop = BorderStyle.Thin; https://blog.csdn.net/ezreal_pan/article/details/81134701...

ASP.NET用XML的方式导出到excel多sheet的实现方式

private void ToExcel(String FileName) { //要转换的XML文件 DataSet dsBook = new DataSet(); dsBook = new Select().Select_(); int rows = dsBook.Tables[...

vcf格式文件转化为Excel(csv)格式文件(R语言的write.csv,write.table功能,Excel表的文件导入功能)

最近在整理文件,准备把vcf文件转化为Excel格式,或者CSV格式,网上搜了一堆资料,还真有人专门开发出转化格式的工具:叫vcf2csv(下载地址http://vcf2csv.sourceforge.net/#links),赶紧下载安装,开始转化,结果弹出行列不一致的错误,遂放弃。 尝试了一堆无用的工具以后,想着能不能用R的write.csv来实现转化,...