Abordemos esto desde un lado práctico. Tuve un desafío similar cuando estaba trabajando en proyectos de ciencia de datos con R.
En uno de los casos, el conjunto de datos era un conjunto de datos de Oracle con datos de pruebas de pozos de producción de pozos de petróleo y gas. La base de datos Oracle era demasiado grande para ser leída en la memoria; mi computadora tenía 8 GB de RAM y el archivo tenía alrededor de 800 GB. Lo que hice en este caso fue dividir el archivo por un aspecto: elegí el tiempo en mi caso, específicamente los años. Luego, seleccioné el año, digamos 2011, y procedí a exportarlo como .csv. Lo intenté primero como formato Excel, pero el agente de exportación de Oracle se bloqueó. Después de terminar de exportar ese año, pasa al siguiente, y así sucesivamente. En su caso, es posible que desee elegir otra dimensión de datos , como campo, unidad de negocios, ubicación, etc. Tendrá que ser algo que ayude a dividir el conjunto de datos en archivos más pequeños. Este método tiene el inconveniente de que no le faltarán algunos datos que llegan en tiempo real . Si el análisis en tiempo real no es un problema, este método de división debería estar bien. Al menos funcionó para mí. Luego, de vuelta a la consola R, puede continuar el trabajo de extraer las partes de los datos que puede utilizar. Eso ayudará a que el conjunto de datos sea aún más pequeño.
En el segundo caso, los archivos del conjunto de datos eran archivos CSV remotos, lo suficientemente grandes como para no poder manejarlos en R en mi computadora portátil. Tengo un HP ZBook con 8 núcleos y 32 Gb de RAM. En mi beneficio, realmente no necesitaba todo el contenido del archivo ; Necesitaba un rango específico de fechas. El conjunto de datos contenía varios años de datos. Si busca en Internet, encontrará que existen varias técnicas para obtener grandes conjuntos de datos. Primero, necesita echar un vistazo a la estructura del conjunto de datos, lo que podría hacer solo descargando las primeras líneas del archivo: el encabezado con los nombres de las variables o columnas. Luego, para las filas u observaciones, envía consultas para tomar la parte superior, la parte inferior del conjunto de datos y en algún lugar en el medio que le dé una idea del rango. Una vez que identifica su área dulce, procede a enviar la consulta para el período que necesita y extrae las filas. Como dije, hay varias estrategias para hacer esto en R. Como probablemente ya haya notado, R siempre tiene varias formas de vencer los desafíos, no solo una.
- Cómo gestionar y desarrollar un producto de big data
- Al entrenar y probar conjuntos de datos, ¿es posible probar un conjunto de datos completamente diferente del conjunto de entrenamiento?
- ¿Es posible hacer una selección de características para las tareas de regresión por XGBoost?
- Redes neuronales convolucionales: ¿Qué están haciendo los regresores de cuadro delimitador en Fast-RCNN?
- # ¿Cómo puedo comenzar un trabajo de investigación sobre aprendizaje automático?
En el tercer caso, se trataba de una base de datos SQLite que ralentizaba la consola R cada vez que se cargaba. De manera muy similar al primer caso, podría dividir el conjunto de datos en partes más pequeñas. Pero este caso fue diferente porque quería los últimos datos . Por lo tanto, utiliza una combinación del método uno y escribe un script que toma los datos todos los días o todas las semanas, pero de tal manera que parchea el conjunto de datos principal y no obtiene lagunas de datos. El script se puede hacer desde su lado local en R, conectarse al servidor, seleccionar los datos y guardarlos localmente. Una segunda alternativa es escribir código en el propio servidor que le enviará a través de ftp o correo electrónico pequeños fragmentos de datos en momentos predeterminados.
En un cuarto caso, un cliente me dio un enorme archivo de base de datos de un servidor MS SQL . No hay posibilidad de que pueda leerlo desde la consola R. Esta era una base de datos de producción de pozos en alta mar en el Golfo de México . Un montón de datos. Zona por zona, capa por capa, plataforma por plataforma. Lo que hice en ese caso fue crear una máquina virtual que actuaría como un servidor de base de datos . Como su propósito no es servir la base de datos a los usuarios, sino explorar los datos para hacer sus descubrimientos, es suficiente descargar e instalar una versión Express del servidor SQL. Eso sería suficiente: no necesita soporte para múltiples CPU o RAM gigantesca si no está en producción. Una vez que tenga su servidor SQL en línea y probado , simplemente use un conector SQL de R a la base de datos y proceda a hacer sus consultas SQL. En este punto, difícil, depende de usted cómo desea interrogar a la base de datos, si es con SQL o con sentencias lógicas R estándar. Probablemente tenga que averiguar cuál es la herramienta de manipulación de marcos de datos más rápida: dplyr o data.table o SQL directo. Si busca en StackOverflow , podrá encontrar scripts de evaluación comparativa en R que hacen exactamente eso. A veces, la diferencia entre los métodos es menos de 10 veces y en otros, 1000 veces más rápido.