作为我的家庭作业的一部分,我需要将大数据文件加载到两个MySQL表中,使用Python解析,在我的客户机上通过Vagrant SSH调用。
然后我还需要在2个表中的一个表上运行Sqoop作业,所以现在我已经达到成功加载其中一个表并运行Python脚本来加载第二个表的时间点,并且已经超过3个小时了。继续加载中。
我想知道我是否可以在已装载的桌子上完成我的Sqoop作业,而不是现在盯着黑屏近4个小时。
我的问题是:
--reload
最终会关闭我的虚拟机,从而导致我的客户机上运行的所有当前作业都被杀死)。 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.commit()
conn.close()
我不知道你的登录脚本中有什么,我不清楚--reload标志是什么,但一般来说你可以有多个ssh会话到同一台机器。只需打开另一个终端并ssh进入VM。
但是,在您的情况下,这可能不是一个好主意。我怀疑第二个表需要很长时间才能加载,因为您的数据库正在重新索引,或者它正在等待锁定被释放。
除非您正在加载数百兆字节,否则我建议您首先检查锁定并查看待处理的查询。
即使您正在加载非常大的数据集,并且您对脚本所需的表没有任何限制,您也只会堆积已经非常重要的计算机...