我可以在并行窗口中为同一个客户机器执行vagrant ssh吗?无论如何会干扰当前的工作吗?

问题描述 投票:1回答:1

作为我的家庭作业的一部分,我需要将大数据文件加载到两个MySQL表中,使用Python解析,在我的客户机上通过Vagrant SSH调用。

然后我还需要在2个表中的一个表上运行Sqoop作业,所以现在我已经达到成功加载其中一个表并运行Python脚本来加载第二个表的时间点,并且已经超过3个小时了。继续加载中。

我想知道我是否可以在已装载的桌子上完成我的Sqoop作业,而不是现在盯着黑屏近4个小时。

我的问题是:

  1. 有没有其他方法可以将Vagrant SSH连接到同一台机器而不进行Vagrant重新加载(因为--reload最终会关闭我的虚拟机,从而导致我的客户机上运行的所有当前作业都被杀死)。
  2. 如果有,那么我会打开一个并行窗口,像往常一样登录到客户机,并开始在已加载的第一个表上处理我的Sqoop作业;它会以任何方式影响我当前的作业仍在加载第二个表吗?或者它会有数据丢失,因为我不能再重复这样做,因为它非常庞大且非常耗时。
  3. python代码就像这样 ~~ def parser(): 使用open('1950-sample.txt','r',encoding ='latin_1')作为输入: for line in input: .... 插入表格

def insert():

if (tablename == '1950_psr'):

    cursor.execute("INSERT INTO 1950_psr (usaf,wban,obs_da_dt,lati,longi,elev,win_dir,qc_wind_dir, sky,qc_sky,visib,qc_visib,air_temp,qc_air_temp,dew_temp,qc_dew_temp,atm_press,qc_atm_press)VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",(USAF,WBAN,obs_da_dt,lati,longi,elev,win_dir,qc_wind_dir, sky,qc_sky,visib,qc_visib,air_temp,qc_air_temp,dew_temp,qc_dew_temp,atm_press,qc_atm_press))


elif (tablename == '1986_psr'):

    cursor.execute("INSERT INTO 1986_psr (usaf,wban,obs_da_dt,lati,longi,elev,win_dir,qc_wind_dir, sky,qc_sky,visib,qc_visib,air_temp,qc_air_temp,dew_temp,qc_dew_temp,atm_press,qc_atm_press)VALUES (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)",(USAF,WBAN,obs_da_dt,lati,longi,elev,win_dir,qc_wind_dir, sky,qc_sky,visib,qc_visib,air_temp,qc_air_temp,dew_temp,qc_dew_temp,atm_press,qc_atm_press))

解析器()

Saving & closing

conn.commit()

conn.close()
python mysql linux vagrant sqoop
1个回答
0
投票

我不知道你的登录脚本中有什么,我不清楚--reload标志是什么,但一般来说你可以有多个ssh会话到同一台机器。只需打开另一个终端并ssh进入VM。

但是,在您的情况下,这可能不是一个好主意。我怀疑第二个表需要很长时间才能加载,因为您的数据库正在重新索引,或者它正在等待锁定被释放。

除非您正在加载数百兆字节,否则我建议您首先检查锁定并查看待处理的查询。

即使您正在加载非常大的数据集,并且您对脚本所需的表没有任何限制,您也只会堆积已经非常重要的计算机...

© www.soinside.com 2019 - 2024. All rights reserved.