Pregunta

necesito para cargar un archivo CSV y guardar los registros en Bigtable. Mi solicitud analizar con éxito 200 registros en los archivos CSV y guardar en la tabla.

Aquí está mi código para guardar los datos.

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();
  }
    }
    }
}

Sin embargo, cuando no hay registros de crecer da error de tiempo de espera.

El archivo CSV puede tener hasta 800 registros. ¿Es posible hacer eso en App-motor?

(algo así como actualización por lotes)

¿Fue útil?

Solución

GAE límite que la aplicación solicitud a 30 segundos, y no se puede ejecutar tarea larga.

El mejor enfoque consiste en dividir este CSV en trozos más pequeños, y procesarlos individualmente, uno tras otro. En el caso de que usted puede cargar sólo como un archivo grande, se puede almacenar como datos binarios, y después del proceso (split y de análisis) usando cola de tareas (nota que también está limitado a 10 minutos por cada solicitud, pero siempre se puede hacer una cadena de tareas). O puede backend usuario proceso.

Otros consejos

Se podría almacenar el archivo CSV en el almacén de blob ( gzipped o no ) y utilizar un MapReduce trabajo para leer y persisten cada línea en el almacén de datos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top