Пакетное обновление Java App-Engine Google - PullRequest
0 голосов
/ 18 мая 2010

Мне нужно загрузить файл .csv и сохранить записи в bigtable. Мое приложение успешно анализирует 200 записей в CSV-файлах и сохраняет их в таблицу.

Вот мой код для сохранения данных.

for (int i=0;i<lines.length -1;i++) //lines hold total records in csv file
{
   String line = lines[i]; 

   //The record have 3 columns integer,integer,Text 

   if(line.length() > 15)
   {
 int n = line.indexOf(",");

 if (n>0)
 {
  int ID = lInteger.parseInt(ine.substring(0,n));
  int n1 = line.indexOf(",", n + 2);

  if(n1 > n)
  {
     int Col1 = Integer.parseInt(line.substring(n + 1, n1));
     String Col2 = line.substring(n1 + 1);

     myTable uu = new myTable();

     uu.setId(ID);
     uu.setCol1(MobNo);

     Text t = new Text(Col2);         
     uu.setCol2(t);

       PersistenceManager pm = PMF.get().getPersistenceManager();
            pm.makePersistent(uu);             
     pm.close();
  }
    }
    }
}

Но когда количество записей не увеличивается, выдается ошибка тайм-аута.

CSV-файл может содержать до 800 записей. Возможно ли это сделать в App-Engine?

(что-то вроде пакетного обновления)

Ответы [ 2 ]

2 голосов
/ 18 мая 2010

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

Лучший подход состоит в том, чтобы разбить этот CSV на более мелкие куски и обрабатывать их индивидуально, один за другим. В случае, когда вы можете загрузить его только как один большой файл, вы можете сохранить его как двоичные данные, а затем обработать (разбить и проанализировать), используя Task Queue (обратите внимание, что он также ограничен 10 минутами на запрос , но вы всегда можете составить цепочку заданий). Или вы можете обработать пользовательский бэкэнд.

0 голосов
/ 20 февраля 2013

Вы можете сохранить свой CSV-файл в Blobstore ( gzipped или не ) и использовать задание MapReduce для чтения и сохранения каждой строки в хранилище данных.

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