Могу ли я сделать vagrant ssh в параллельном окне для той же гостевой машины, которая также выполняет задание?В любом случае это нарушит текущую работу? - PullRequest
1 голос
/ 23 марта 2019

Как часть моей домашней работы мне нужно загрузить большие файлы данных в две таблицы MySQL, проанализированные с помощью Python, на моей гостевой машине, которая вызывается через Vagrant SSH.

Затем мне также нужно запустить задание Sqoop для одной из двух таблиц, так что теперь я дошел до того, что успешно загрузил одну из таблиц и запустил скрипт Python для загрузки второй таблицы, и это было больше, чем 3 часа и все еще загружается.

Мне было интересно, смогу ли я завершить свою работу Sqoop на уже загруженной таблице вместо того, чтобы пялиться на черный экран в течение почти 4 часов.

Мои вопросы:

  1. Есть ли какой-либо другой способ Vagrant SSH на той же машине без перезагрузки Vagrant (потому что --reload в конечном итоге отключает мою виртуальную машину, тем самым уничтожая все текущие задания, выполняемые на моих гостях).

  2. Если есть, то, учитывая, что я открываю параллельное окно, чтобы войти в систему на гостевой машине, как обычно, и начинаю работать над заданием Sqoop на первой таблице, которая уже загружена; это как-то повлияет на мою текущую работу со второй таблицей, которая все еще загружается? Или это приведет к потере данных, поскольку я не могу рисковать, потому что это очень большой и очень трудоемкий процесс.

  3. код Python выглядит так

    ~~ def parser ():

    с открытым ('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.commit ()

conn.close()

1 Ответ

0 голосов
/ 23 марта 2019

Я не знаю, что в ваших сценариях входа в систему, и мне не ясно, что это за флаг --reload, но в целом вы можете иметь несколько сессий ssh ​​на одной машине. Просто откройте другой терминал и зайдите в виртуальную машину.

Однако в вашем случае это, вероятно, не очень хорошая идея. Я подозреваю, что загрузка второй таблицы занимает много времени, потому что ваша база данных переиндексируется или ожидает снятия блокировки.

Если вы не загружаете сотни мегабайт, я советую сначала проверить блокировки и посмотреть, какие запросы ожидают.

Даже если вы загружаете очень большой набор данных и нет ограничений на таблицу, в которой вы нуждаетесь для сценария, вы просто собираетесь накапливаться на машине, которая уже облагается большими налогами ...

...