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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538433.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538433.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538433.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SecureCRT如何導出導入配置文件

以SecureCRT7.2.5為例 Options-----Global Options -----General -----Configuration Paths 備份: 進入該文件夾,復制里面的內容到要備份的地方 還原: 將上面的復制的文件,拷貝到 Configuration Paths 下

【原創】利用騰訊和百度的AI接口識別驗證碼

眾所周知,驗證碼在大部分的實際運用中是繞不開的問題,包括驗證,爬蟲,測試等等,然后解決驗證碼的方法也有不少,但大多數都會運用OCR。(這里說的驗證碼,是字符類型的驗證碼&#xff09…

在java中5 % 3_Java基礎5

Java多線程:進程:進行中的程序線程:就是進程中一個負責程序執行的控制單元(執行單元)一個進程中可以多執行路徑,稱之為多線程一個進程至少一個線程開啟多個線程是為了同時運行多部分代碼每個線程都有自己運行的內容,這個內容成為線程要執行的任務多線程的…

scala中:: , +:, :+, :::, +++的區別

原文鏈接:https://segmentfault.com/a/1190000005083578 ------------------------------------------------------------- 4種操作符的區別和聯系 :: 該方法被稱為cons,意為構造,向隊列的頭部追加數據,創造新的列表。用法為 x::…

python包管理機制_Go 1.5之前的多種包管理機制簡介(

在 Go 語言中,我們可以使用go get命令安裝遠程倉庫中托管的代碼,不同于 Ruby Gem、pypi 等集中式的包管理機制, Go 語言的包管理系統是去中心化的。簡單來講,go get命令支持任何一個位置托管的 Git 或 Mercurial 的倉庫&#xff0…

nc命令簡介

nc介紹 ncat/nc 既是一個端口掃描工具,也是一款安全工具,還能是一款監測工具,甚至可以做為一個簡單的 TCP 代理。 在大多數 Debian 發行版中,nc 是默認可用的,它會在安裝系統的過程中自動被安裝。 但是在 CentOS 7 / R…

java時間日期工具類_java工具類--日期相關;

日期相關Date類1.通常使用的是java.util包2.導包 拿來使用 構建對象3.通常使用無參數的構造方法 或者帶long構造方法4.Date類中常用的方法before(); after();setTime() getTime()compareTo(); -1 1 0;5.可以處理一個Date類型的格式DateFormat類1.包java.text 需要導包使用2.此類…

/* compiled code */ ?

原因:這是所用的ide自帶了反編譯工具,反編譯的。不是具體的源碼 具體的源碼需要手動關聯源碼包

python判斷矩陣是否對稱_Python創建對稱矩陣的方法示例【基于numpy模塊】

本文實例講述了Python創建對稱矩陣的方法。分享給大家供大家參考,具體如下:對稱(實對稱)矩陣也即:step 1:創建一個方陣>>> import numpy as np>>> X np.random.rand(5**2).reshape(5, 5)>>> Xarray([…

重新學習Ubuntu -- 截圖軟件的選擇和安裝

前面兩篇完成了:系統的安裝和系統安裝后的優化。 截圖軟件 shutterflameshot 這個根據自己原來的學習經驗和網上的相關資料來完成截圖軟件的安裝。參照文章: shutter :Ubuntu 18.04/LinuxMint 19中啟用Shutter編輯功能 flameshot:Flameshot:你…

Scala-Actor并行wordcount

scala-2.10.6 文件: "d://word.txt", "d://word.log" 文件內容: 代碼: package cn.zengmg.day26.actorimport scala.actors.{Actor, Future} import scala.collection.mutable.ListBuffer import scala.io.Sourcecase c…

小程序測試用例模板_微信小程序樣式:高質量小程序樣式模板大全

新手想要制作出美觀的小程序,你需要多參考一些好看的微信小程序樣式。今天就帶大家分析幾個高質量小程序的樣式,看看別是怎么把小程序做得美觀又吸引人的:1.電商小程序樣式電商小程序首頁一般是按照“圖片banner - 快捷按鈕 - 商品及分類”的…

Sql Server 2016數據庫生成帶數據的腳本

步驟:右鍵點擊對應數據庫->任務->生成腳本 在彈出的會話框中選擇需要的對象,點擊下一步,在設置和編寫腳本選項中,點開高級按鈕(如圖)選擇架構和數據點擊確定就可以了。 提醒:如果你在數據…

深入理解Scala的隱式轉換系統

原文鏈接:http://www.cnblogs.com/MOBIN/p/5351900.html----------------------------------------------摘要:通過隱式轉換,程序員可以在編寫Scala程序時故意漏掉一些信息,讓編譯器去嘗試在編譯期間自動推導出這些信息來&#xf…

python123輸出最大值_Python:運行另一列的最大值?

我有一個像這樣的數據幀,它跟蹤特定項(ID)的值隨時間的變化:mytimenp.tile( np.arange(0,10) , 2 )myidsnp.repeat( [123,456], [10,10] )myvaluesnp.random.random_integers(20,30,10*2)dfpd.DataFrame()df[myids]myidsdf[mytime]mytimedf[myvalues]myv…

Java連接MySQL

2019獨角獸企業重金招聘Python工程師標準>>> <1> 在navicat中創建一個MySQL連接&#xff0c;填寫連接名和密碼&#xff08;密碼為你配置MySQL設置的密碼&#xff09; <2> 在該連接中新建一個數據庫&#xff0c;填寫數據庫名。字符集選擇&#xff08;gb-…

ssm實訓報告心得_Java開發學習心得(一):SSM環境搭建

Java開發學習心得&#xff08;一&#xff09;&#xff1a;SSM環境搭建有一點.NET的開發基礎&#xff0c;在學校學過基礎語法&#xff0c;對JAVA有點興趣&#xff0c;就簡單學習了一下&#xff0c;記錄一下從哪些方面入手的&#xff0c;暫時不打算深入到原理方面&#xff0c;先簡…

Java中boolean類型占用多少個字節

原文地址&#xff1a;http://www.cnblogs.com/wangtianze/p/6690665.html?utm_sourceitdadao&utm_mediumreferral ----------------------- 為什么要問這個問題&#xff0c;首先在Java中定義的八種基本數據類型中&#xff0c;除了其它七種類型都有明確的內存占用字節數外…

java虛引用作用_深入理解Java中的引用(二)——強軟弱虛引用

深入理解Java中的引用(二)——強軟弱虛引用在上一篇文章中介紹了Java的Reference類&#xff0c;本篇文章介紹他的四個子類&#xff1a;強引用、軟引用、弱引用、虛引用。強引用(StrongReference)強引用是我們在代碼中最普通的引用。示例代碼如下&#xff1a;Object o new Obje…

SQL查詢表的列名

SELECT COLUMN_NAME FROM DBA_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE TABLE_NAME DT4_JOB_CHECK_MATRIX;