python—我可以在并行窗口中为当前运行作业的同一台客户机执行vagrant ssh吗?不管怎样,它会干扰当前的工作吗?

irtuqstp  于 2021-06-03  发布在  Sqoop
关注(0)|答案(1)|浏览(215)

作为家庭作业的一部分,我需要将大数据文件加载到两个mysql表中,使用python进行解析,然后在通过vagrantssh调用的客户机上进行调用。
然后,我还需要在这两个表中的一个表上运行sqoop作业,所以现在我已经成功地加载了其中一个表,并运行python脚本来加载第二个表,而且已经3个多小时了,仍然在加载。
我想知道我是否可以在已经加载的表上完成sqoop工作,而不是现在盯着黑屏看近4个小时。
我的问题是:
有没有其他方法可以在不执行vagrant-reload的情况下将ssh迁移到同一台机器中(因为 --reload 最终关闭了我的虚拟机,从而杀死了在我的客户机上运行的所有当前作业)。
如果有,那么假设我像往常一样打开一个并行窗口登录到客户机,并在已经加载的第一个表上开始处理sqoop作业;第二个表仍在加载,这会影响我当前的工作吗?或者它会有一个数据丢失,因为我不能冒险重新做它,因为它是超大型和非常耗时。
python代码是这样的
~~def解析器():
以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))

分析器()

保存和关闭

连接提交()

conn.close()
67up9zun

67up9zun1#

我不知道您的登录脚本中有什么,也不清楚--reload标志是什么,但一般来说,您可以在同一台机器上有多个ssh会话。只需打开另一个终端并将ssh连接到vm。
然而,在你的情况下,这可能不是一个好主意。我怀疑加载第二个表需要很长时间,因为您的数据库正在重新编制索引,或者它正在等待释放锁。
除非您正在加载数百个meg,否则我建议您首先检查锁并查看哪些查询处于挂起状态。
即使您正在加载非常大的数据集,并且在脚本所需的表上没有任何约束,您也只会堆积在一台已经非常繁重的机器上。。。

相关问题