python传文件给堡垒机上远程的另一个机器_如何用hive调度堡垒机上的python脚本...
工作中,如果我们本地要操作的数据量大,那么主机是跑不起来python脚本的,这个时候,就要用到服务器(也叫堡垒机)了。那么如何用HIVE调用堡垒机上的python脚本呢?今天小白就总结一下步骤和一些注意事项~
1.首先将Python脚本上传到堡垒机上
2.上传后,在HIVE中编写shell JOB
#这里设置地址等变量,可以重复使用
file_path="/home/chen_lib" #服务器大目录
file_name_t="traindatas.csv" #训练数据
file_name_y="df2.csv" #结果数据集
python_name="Untitled1.py" #python脚本
#传入数据 由于两个库不通,所以直接把测试数据放到服务器上,就不做从表读入的操作
#若要将HIVE中的表读入到服务器上,执行下面命令
hive -e "set hive.resultset.use.unique.column.names=false;set hive.cli.print.header=true;
select * from table " >> $file_path/$file_name_t
#执行python脚本,将结果传入到服务器的df表中
python2.7 $file_path/$python_name $file_path $file_path
#从服务器上读取表到HIVE表中
hive -e "LOAD DATA LOCAL INPATH '$file_path/$file_name_y' OVERWRITE INTO TABLE tablename partition (d='${zdt.format("yyyy-MM-dd")}')"
echo "导入数据完成!"
3.建HIVE表时要注意:
1)文件的分割要用‘,’,因为是csv文件,否则数据读入就是空的
2)建表是要建成textfile,如果建成orc会报错:
Caused by: java.io.IOException: Malformed ORC file
原因是:ORC格式是列式存储的表,不能直接从本地文件导入数据,只有当数据源表也是ORC格式存储时,才可以直接加载,否则会出现上述报错。
USE database;
CREATE TABLE tablename(
hotelid int COMMENT 'field1 comment',
max_quantity int COMMENT 'field2 comment',
section_query_min int COMMENT 'field2 comment',
section_query_max intCOMMENT 'NULL'
)
COMMENT 'owner:chen'
PARTITIONED BY (d string COMMENT 'date')
row format delimited fields terminated by ','
STORED AS textfile;
4.Python脚本中有几点需要注意一下
1)输出的路径要与HIVE中的路径一致
2)传出的表df2要去掉列名,不然也会被读入到hive表中
3)传出csv文件要用‘,’分割,否则,如果用‘\’,会输出到一列中去,无法读入hive表中
# coding: utf-8
import pandas as pd
import numpy as np
file_path="/home/hotel/chen_lib/"
file_name_t="traindatas.csv"
file_name_y="df2.csv"
data_ctrip = pd.read_csv(file_path+file_name_t,header = 'infer')
ret1=[]
#循环取出每一行的最大值
for row in range(data_ctrip.shape[0]):
ret = []
quantitylist=[data_ctrip.loc[row,'quantity0_1'],data_ctrip.loc[row,'quantity1_2'],data_ctrip.loc[row,'quantity2_3'],data_ctrip.loc[row,'quantity3_4'],data_ctrip.loc[row,'quantity4_5'],data_ctrip.loc[row,'quantity5_6'],data_ctrip.loc[row,'quantity6_7'],data_ctrip.loc[row,'quantity7_8'],data_ctrip.loc[row,'quantity8_9'],data_ctrip.loc[row,'quantity9_10'],
data_ctrip.loc[row,'quantity10_11'],data_ctrip.loc[row,'quantity11_12'],data_ctrip.loc[row,'quantity12_13'],data_ctrip.loc[row,'quantity13_14'],data_ctrip.loc[row,'quantity14_15'],data_ctrip.loc[row,'quantity15_16'],data_ctrip.loc[row,'quantity16_17'],data_ctrip.loc[row,'quantity17_18'],data_ctrip.loc[row,'quantity18_19'],data_ctrip.loc[row,'quantity19_20']]
sectionlist=[data_ctrip.loc[row,'section0_1'],data_ctrip.loc[row,'section1_2'],data_ctrip.loc[row,'section2_3'],data_ctrip.loc[row,'section3_4'],data_ctrip.loc[row,'section4_5'],data_ctrip.loc[row,'section5_6'],data_ctrip.loc[row,'section6_7'],data_ctrip.loc[row,'section7_8'],data_ctrip.loc[row,'section8_9'],data_ctrip.loc[row,'section9_10'],
data_ctrip.loc[row,'section10_11'],data_ctrip.loc[row,'section11_12'],data_ctrip.loc[row,'section12_13'],data_ctrip.loc[row,'section13_14'],data_ctrip.loc[row,'section14_15'],data_ctrip.loc[row,'section15_16'],data_ctrip.loc[row,'section16_17'],data_ctrip.loc[row,'section17_18'],data_ctrip.loc[row,'section18_19'],data_ctrip.loc[row,'section19_20']]
max_quantity = max(quantitylist) #取出最大的间夜
max_quantity_index = quantitylist.index(max_quantity)#取出最大间夜对应的索引
section_query = sectionlist[max_quantity_index]#取出最大间夜对应的区间
section_query_min = int(section_query.split("-", 1)[0])#取出价格区间的最小值
section_query_max = int(section_query.split("-", 1)[1])#取出价格区间的最大值
ret.append([data_ctrip.loc[row,'hotelid'],max_quantity,section_query_min,section_query_max])
ret1.extend(ret)#追加行
df1 = pd.DataFrame(ret1)
df1.to_csv('file_path+file_name_y',sep=',',index=False,header=False)
以上就是在用堡垒机和HIVE来执行时的步骤和可能遇到的问题啦~
标签:loc,name,机上,ctrip,python,hive,file,data,row
python传文件给堡垒机上远程的另一个机器_如何用hive调度堡垒机上的python脚本...相关推荐
- ftp 文件夹 上传到服务器,ftp上传文件夹到服务器 远程路径
ftp上传文件夹到服务器 远程路径 内容精选 换一换 WinSCP工具可以实现在本地与远程计算机之间安全地复制文件.与使用FTP上传代码相比,通过 WinSCP 可以直接使用服务器账户密码访问服务器, ...
- python打开一个不存在的文件时-python判断文件是否存在,不存在就创建一个的实例...
python判断文件是否存在,不存在就创建一个的实例 如下所示: try: f =open("D:/1.txt",'r') f.close() except IOError: f ...
- ewebeditor在上传文件时,总是提示“请选择一个有效的文件”,
用ewebeditor在上传文件时,总是提示"请选择一个有效的文件",可我上传的文件格式明明是正确的,而且在XP上测试时一切正常啊,难道是程序有问题?经过研究终于找到了问题所在. ...
- 怎样给windows服务器传文件,windows服务器怎么远程传文件
windows服务器怎么远程传文件 内容精选 换一换 本节操作介绍如何在Windows操作系统的本地主机上使用FTP上传文件到云服务器.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务器为 ...
- python读写文件详解,将数据写入一个文件或读一个文件写入另一个文件中。
目录 实践一:读取文件并打印,read() 实践二:读取文件的一行并打印,readline() 实践三:读取文件的所有行存入到一个列表中并打印,readlines() 实践四:向文件中写入字符串,wr ...
- python如何使用gpu加速_如何用云端 GPU 为你的 Python 深度学习加速?
负荷 下午,我用 Python 深度学习框架 Keras 训练了一个包含3层神经网络的回归模型,预测波士顿地区房价. 这是来自于 "Deep Learning with Python&quo ...
- python画出一个梅花_如何用Python画一棵漂亮的树
Tree 海龟绘图turtle 在1966年,Seymour Papert和Wally Feurzig发明了一种专门给儿童学习编程的语言--LOGO语言,它的特色就是通过编程指挥一个小海龟(turtl ...
- 锐星服务器怎么上传文件,协议转换器仪表远程配置方法专利_专利申请于2019-06-06_专利查询 - 天眼查...
1.一种协议转换器仪表远程配置方法,其特征在于,包括以下步骤: 步骤1:在平台端开发一个基于页面配置的配置程序,为指定的CAN仪表协议提供配置工具,输出配置文件:该配置文件是由版本信息.报文CAN I ...
- python传文件给java_python使用简单http协议来传送文件
python使用简单http协议来传送文件! 在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件 我们可以使用python -m SimpleHTTPSe ...
最新文章
- Android开发--多媒体应用开发(一)--MediaPlayer的使用介绍
- php怎么输出3个函数和,PHP利用var_dump,var_export,print_r三个函数的区别示例
- python异常值处理实例_利用Python进行异常值分析实例代码
- mysql drivermanager.getconnection_Java DriverManager.getConnection()方法:获取数据库连接
- 使用 grep 查找所有包含指定文本的文件
- 力扣-48 旋转图像
- HTTP权威指南(浓缩版)
- 七号信令:信令网基本概念
- 编程语言Netty原理浅析
- 开发版速达扩展功能-提供便捷的界面布局功能
- 长方形面积计算机方式,长方形正方形面积计算
- IELTS-writing exercise Expository_Text_18
- 河海大学2021年硕士研究生招考公告
- 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三_zzjlzx-ChinaUnix博客...
- WhatsApp聊天记录迁移新手机,备份如何找回和删除?
- 恒大通关世界500强:一家房企的进阶路与中国民营企业的边界探索
- Python获取多核CPU温度 均值
- 暴力递归到动态规划 05 (贴纸拼词)
- 软件测试行情前景,你可以做测试多久?到底能干到多少岁?
- jQuery实现小游戏源代码--打灰太狼
热门文章
- java中线程存活和线程执行的问题!
- php自然排序法的比较过程,PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)...
- dj打碟怎么学_学DJ要不要去培训学校?
- 如何实现软件的远程更新_手机免root终于也能实现远程控制了 这款国产软件真是越来越好用...
- 计算机二级指针,C语言——二级指针
- php设计模式及案例分析,一个案例来认识PHP经典设计模式 | 张先生博客
- vscode连接远程服务器 SSH
- UnicodeEncodeError: 'gbk' codec can't encode character '\xeb' in position 20: illegal multibyte sequ
- Java并发篇_Java内存模型
- JAVA知识基础(七):封装