¿Hay muestras para la generación de informes Java de appengine?

Estamos usando AppEngine y el almacén de datos para nuestra aplicación donde tenemos una tabla de información moderadamente grande que contiene una lista con entradas.

Me gustaría resumir la lista de entradas en un informe que especifica cuántas veces aparece cada una, por ejemplo, normalmente en SQL, simplemente usaría a select distinctpara una columna, luego recorrería cada entrada y simplemente la usaría select count(x) where value = valueOfEntry.

Si bien la porción de conteo se realiza fácilmente, el problema distintivo es "un problema". La única solución que pude encontrar remotamente cerca de esto es MapReduce y la mayoría de las muestras se basan en Python. Existe esta entrada de blog que es muy útil pero algo desactualizada ya que es anterior a la porción reducida. Luego está el video aquí y algunos recursos más que pude encontrar.

Sin embargo, ¿es realmente difícil para mí entender cómo construir la tabla de resumen si no puedo escribir en una entidad separada y no tengo una etapa de reducción?

Esto parece algo trivial y simple de lograr, pero requiere tantos aros, ¿no hay una muestra o un motor de informes existente que pueda conectar a AppEngine sin toda la fricción?

Vi BigQuery , pero parece una gran molestia mover los datos del motor de la aplicación a esa tienda. Intenté descargar los datos como CSV pero también tuve muchos problemas con eso. Tampoco parece una solución práctica a largo plazo.

Respuesta 1

Hay un documento que explica algunos de los conceptos de mapreduce para java. Aunque está incompleto, comparte la mayor parte de la arquitectura con la versión de Python. En ese documento, también hay un puntero a una aplicación completa de mapreduce de muestra de Java , que se lee desde el almacén de datos.

Para escribir los resultados, especifique una Outputclase . Para escribir los resultados en una nueva entidad del almacén de datos, necesitaría crear su propia Clase de salida. Pero también podría usar el blobstore (consulte BlobFileOutput.java).

Otra alternativa es que siempre que escriba una de sus entidades, también escriba / actualice otra entrada en un modelo de datos EntityDistinct.

Si planea realizar informes complejos y puede anticipar todas sus necesidades ahora, le sugiero que vuelva a consultar Big Query. BigQuery es realmente potente y funciona perfectamente en conjuntos de datos muy masivos. Puede inspeccionar http://code.google.com/p/log2bq/, que es un proyecto de Python que carga los registros en Big Query mediante mapreduce. O también podría tener un trabajo cron, que de vez en cuando recupera todas las entidades nuevas y las mueve a Big Query.

En relación con la fricción, recuerde que esta es una base de datos no SQL y, como tal, tiene algunas ventajas, pero algunas cosas son inherentemente diferentes a SQL. Recuerde que siempre puede usar Google Cloud SQL , dado que su conjunto de datos es de tamaño limitado, pero perdería las capacidades de replicación y tolerancia a fallas.

Respuesta: 2

Necesito encontrar cada lugar en el código (en el proyecto Java) donde de alguna manera trata el sistema de archivos (por ejemplo, crea un archivo, lee un archivo, obtiene la lista de archivos de directorio, etc.) ¿Cuál es el patrón más común para ...

Desde https://developers.google.com/web-toolkit/articles/fragment_merging: para habilitar esta función, simplemente agregue -XfragmentCount x a la línea de comandos del compilador GWT y el separador de código intentará ...

Estoy enfrentando problemas para entender el uso en Singleton. Entiendo que al usar el patrón singleton una vez que se crea una instancia de una clase y se comparte entre todos los usuarios. Sin embargo, esto no ...

Entonces, tengo un programa que crea un archivo PDF de salida que quiero que se pueda leer (mediante mi programa) al insertar metadatos en él. Y eso es una gran cantidad de datos. Me sugirieron hacer esto ...