工作中,如果我们本地要操作的数据量大,那么主机是跑不起来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脚本...相关推荐

  1. ftp 文件夹 上传到服务器,ftp上传文件夹到服务器 远程路径

    ftp上传文件夹到服务器 远程路径 内容精选 换一换 WinSCP工具可以实现在本地与远程计算机之间安全地复制文件.与使用FTP上传代码相比,通过 WinSCP 可以直接使用服务器账户密码访问服务器, ...

  2. python打开一个不存在的文件时-python判断文件是否存在,不存在就创建一个的实例...

    python判断文件是否存在,不存在就创建一个的实例 如下所示: try: f =open("D:/1.txt",'r') f.close() except IOError: f ...

  3. ewebeditor在上传文件时,总是提示“请选择一个有效的文件”,

    用ewebeditor在上传文件时,总是提示"请选择一个有效的文件",可我上传的文件格式明明是正确的,而且在XP上测试时一切正常啊,难道是程序有问题?经过研究终于找到了问题所在. ...

  4. 怎样给windows服务器传文件,windows服务器怎么远程传文件

    windows服务器怎么远程传文件 内容精选 换一换 本节操作介绍如何在Windows操作系统的本地主机上使用FTP上传文件到云服务器.已在待上传文件的云服务器中搭建 FTP 服务.如果您的云服务器为 ...

  5. python读写文件详解,将数据写入一个文件或读一个文件写入另一个文件中。

    目录 实践一:读取文件并打印,read() 实践二:读取文件的一行并打印,readline() 实践三:读取文件的所有行存入到一个列表中并打印,readlines() 实践四:向文件中写入字符串,wr ...

  6. python如何使用gpu加速_如何用云端 GPU 为你的 Python 深度学习加速?

    负荷 下午,我用 Python 深度学习框架 Keras 训练了一个包含3层神经网络的回归模型,预测波士顿地区房价. 这是来自于 "Deep Learning with Python&quo ...

  7. python画出一个梅花_如何用Python画一棵漂亮的树

    Tree 海龟绘图turtle 在1966年,Seymour Papert和Wally Feurzig发明了一种专门给儿童学习编程的语言--LOGO语言,它的特色就是通过编程指挥一个小海龟(turtl ...

  8. 锐星服务器怎么上传文件,协议转换器仪表远程配置方法专利_专利申请于2019-06-06_专利查询 - 天眼查...

    1.一种协议转换器仪表远程配置方法,其特征在于,包括以下步骤: 步骤1:在平台端开发一个基于页面配置的配置程序,为指定的CAN仪表协议提供配置工具,输出配置文件:该配置文件是由版本信息.报文CAN I ...

  9. python传文件给java_python使用简单http协议来传送文件

    python使用简单http协议来传送文件! 在ubuntu环境下,局域网内可以使用nc来传送文件,也可以使用基于Http协议的方式来下载文件 我们可以使用python -m SimpleHTTPSe ...

最新文章

  1. Android开发--多媒体应用开发(一)--MediaPlayer的使用介绍
  2. php怎么输出3个函数和,PHP利用var_dump,var_export,print_r三个函数的区别示例
  3. python异常值处理实例_利用Python进行异常值分析实例代码
  4. mysql drivermanager.getconnection_Java DriverManager.getConnection()方法:获取数据库连接
  5. 使用 grep 查找所有包含指定文本的文件
  6. 力扣-48 旋转图像
  7. HTTP权威指南(浓缩版)
  8. 七号信令:信令网基本概念
  9. 编程语言Netty原理浅析
  10. 开发版速达扩展功能-提供便捷的界面布局功能
  11. 长方形面积计算机方式,长方形正方形面积计算
  12. IELTS-writing exercise Expository_Text_18
  13. 河海大学2021年硕士研究生招考公告
  14. 完成端口(CompletionPort)详解 - 手把手教你玩转网络编程系列之三_zzjlzx-ChinaUnix博客...
  15. WhatsApp聊天记录迁移新手机,备份如何找回和删除?
  16. 恒大通关世界500强:一家房企的进阶路与中国民营企业的边界探索
  17. Python获取多核CPU温度 均值
  18. 暴力递归到动态规划 05 (贴纸拼词)
  19. 软件测试行情前景,你可以做测试多久?到底能干到多少岁?
  20. jQuery实现小游戏源代码--打灰太狼

热门文章

  1. java中线程存活和线程执行的问题!
  2. php自然排序法的比较过程,PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)...
  3. dj打碟怎么学_学DJ要不要去培训学校?
  4. 如何实现软件的远程更新_手机免root终于也能实现远程控制了 这款国产软件真是越来越好用...
  5. 计算机二级指针,C语言——二级指针
  6. php设计模式及案例分析,一个案例来认识PHP经典设计模式 | 张先生博客
  7. vscode连接远程服务器 SSH
  8. UnicodeEncodeError: 'gbk' codec can't encode character '\xeb' in position 20: illegal multibyte sequ
  9. Java并发篇_Java内存模型
  10. JAVA知识基础(七):封装