[R-es] Procesos paralelos
Gilsanz, Jose Luis
jluis.gilsanz en eu.jll.com
Mar Abr 12 15:37:07 CEST 2016
Miguel:
Mil gracias por tu sugerencia de usar la barra de progreso tcltk , me funciona perfectamente y además la barra de progreso es más bonita ☺
Ahora me entra la curiosidad malsana de saber porque con la barra de windows no sale la barrra y con tcltk si que aparece.
Carlos:
No habia oido hablar de ese paquete pero en cuanto termine con los ETL que tengo pendientes voy a empollarme la web del paquete que me has enviado porque seguro que agiliza muchisimo todos estos procesos.
Muchas gracias a los dos por la variedad y calidad de las soluciones
José Luis Gilsanz Gómez
Estadística
Departamento Técnico Entidades Financieras
JLL Valoraciones S.A. (Jones Lang LaSalle España S.A.)
Paseo de la Castellana 130 - 1ª; 28046 Madrid
Tel: +34 91 454 96 94
Fax +34 91 541 42 64
jll.es
Síguenos en: Twitter I Linkedin I Youtube I Blog
Piense en el medio ambiente antes de imprimir este e-mail
Los datos personales que en esta comunicación aparecen, así como los que nuestra empresa mantiene de Vd. y de su empresa, son tratados con la finalidad de mantener el contacto así como realizar las gestiones que en esta aparecen (Ley Orgánica 15/1999, de 13 de diciembre, de Protección de Datos de Carácter Personal).
Puede ejercer sus derechos de acceso, rectificación, cancelación y oposición dirigiéndose a atencion.clientesth en tasacionesh.com.
La utilización de su dirección de correo electrónico por parte de nuestra empresa queda sujeta a las disposiciones de la Ley 34/2002, de Servicios de la Sociedad de la Información y el Comercio Electrónico. Si Vd. recibe comunicación comercial por nuestra parte y desea dejar de recibirla, rogamos nos lo comunique por vía electrónica a través de la dirección atencion.clientesth en tasacionesh.com .
> -----Mensaje original-----
> De: gilbellosta en gmail.com [mailto:gilbellosta en gmail.com] En nombre de
> Carlos J. Gil Bellosta
> Enviado el: martes, 12 de abril de 2016 14:37
> Para: Miguel Angel Rodriguez Muiños
> CC: Gilsanz, Jose Luis; r-help-es
> Asunto: Re: [R-es] Procesos paralelos
>
> Hola, ¿qué tal?
>
> Si la base de datos de destino es SQL Server, ¿por qué no pruebas con la
> función dbBulkCopy del paquete https://github.com/agstudy/rsqlserver?
> Debería poder cargar millones de registros en segundos. Al menos, en una
> única transacción en lugar de múltiples como con sqlSave.
>
> Un saludo,
>
> Carlos J. Gil Bellosta
> http://www.datanalytics.com
>
> El día 12 de abril de 2016, 11:55,
> <miguel.angel.rodriguez.muinos en sergas.es<mailto:miguel.angel.rodriguez.muinos en sergas.es>> escribió:
> > Hola José Luis.
> >
> > Te da algún error? o simplemente no aparece la barra de progreso?
> >
> > ... y si, en vez de usar winProgressBar(), pruebas con la función
> tkProgressBar() del paquete tcltk ¿?
> >
> > Un saludo,
> > Miguel.
> >
> >
> >
> > El 12/04/2016 a las 11:04, Gilsanz, Jose Luis escribió:
> >
> > Hola:
> >
> > Vuelvo a la carga con algo que resolv hace a os y que ahora me ha dejado
> de funcionar y no consigo arreglar. A ver si alguien me sugiere alg n enfoque
> o directamente la solucion.
> >
> > Utilizo R en muchos procesos ETL y la cuesti n es que me encuentro con que
> tengo que hacer inserts en un BBDD de SQL Server de varios miles (a veces
> millones de registros) que mientras R las realiza parece que no est haciendo
> nada.
> >
> > La soluci n que consegu hacer en su momento fue paralelizar el proceso de
> inserci n en dos procesos distintos usando el paquete snowfall.
> > -Un proceso se encargaba de la propia inserci n de los datos.
> > -El otro proceso mostraba una barra de progreso que se constru a
> consultando la tabla (tab) donde se insertaban los registros (datos) para
> monitorizar su proceso.
> >
> > La subida al servidor es esta funci n:
> >
> > subida <- function( datos, tab)
> > {
> > flush.console()
> > canal2 <- odbcDriverConnect( "case=nochange;
> Driver=xxx; Server=xxx; Database=xxx; uid=xxx; pwd=xxx; wsid=xxx;")
> > sqlSave(canal2,datos,tablename= tab, rownames =
> FALSE, append=TRUE, fast=TRUE )
> > close(canal2)
> > rm(canal2)
> > }
> >
> > La barra de progreso se toma de esta funci n:
> > pb <-function( datos,tab){
> > ##Creamos canal de conexion a BBDD
> > canal1 <- odbcDriverConnect( "case=nochange;
> > Driver=SQL Server; Server=xxx; Database=xxx; uid=xxx; pwd=xx;
> > wsid=ESMADN1003;;")
> >
> > ##Obtenemos conteos de registros##################
> > #Numero de registro que se van a cargar
> > asubir <- as.numeric(nrow(datos))
> >
> > #Numero de registro que ya hay en la tabla
> > entabla <- as.numeric(sqlQuery(canal1,paste("SELECT
> > Count(*) ", " FROM ",tab, sep="")))
> >
> > #Numero de registros cargados en el momento n
> > total <- as.numeric(0)
> >
> > #Frecuenca de actualizacion de la barra
> > frec <- 0.1
> >
> > ##Creamos barra de progreso
> > barra <- winProgressBar(title="Subiendo datos a SQL ", label =
> > "Subido el: ", min= 0, max= 1,initial= 0, width = 800)
> >
> > ##Mientras los registros que quedan por subir sean inferiores a los
> que actualmente hay en la tabla se muestra la barra
> > while ( entabla + asubir > total )
> > {
> > #Reconectamos
> > canal1 <-
> > odbcReConnect(canal1)
> >
> > #Obtenemos registros actuales en la tabla (los que
> habia + los que han subido hasta el momento)
> > total <-
> > as.numeric(sqlQuery(canal1,paste("SELECT Count(*) FROM ",tab,
> > sep="")))
> >
> > #Calculamos porcentaje de registros subidos en el
> momento
> > porcen <-
> > as.numeric((total - entabla) / asubir)
> >
> > #Actualizamos barra de progreso
> >
> > setWinProgressBar(barra, porcen,title="SUBIENDO DATOS A SQL", label
> > =paste("Subido el: ", round(porcen *100,0), "% de los datos. Quedan
> > por subir ",(entabla + asubir)-total, " registros de ", asubir, "." ,
> > sep=""))
> >
> > #Actualizamos consola
> > flush.console()
> > Sys.sleep(frec)
> > }
> > close(barra)
> > }
> >
> > Ahora estoy intentando usar el paquete parallel (en lugar de snowfall que
> ya no me funciona) haciendo esto.
> > library(parallel)
> > library(RODBC)
> >
> > ##Creo un cluster con dos nodos
> > cl <-makeCluster(2)
> >
> > ##Exporto datos y funciones a los dos cluster
> > clusterExport(cl,varlist=c("pb","subida","datos","tab"))
> >
> > ##En el primer cluster hago la inserci n en el segundo la barra de
> > progreso
> > clusterApply(cl,subida(datos,tab),pb(datos,tab) )
> >
> >
> > La inserci n la realiza correctamente pero la barra de progreso no
> > aparece por ning n lado :( y en el monitor de procesos aparecen dos
> > Rscript.exe corriendo (uso Windows 7)
> >
> > Si alguien quiere que le proporcione la funci n que constru usando snowfall
> (y que ahora tampoco muestra la barra) se la puedo enviar para destriparla.
> >
> > Muchas gracias
> >
> > Un saludo
> >
> >
> > Jos Luis Gilsanz G mez
> > Estad stica
> > Departamento T cnico Entidades Financieras JLL Valoraciones S.A.
> > (Jones Lang LaSalle Espa a S.A.) Paseo de la Castellana 130 - 1 ;
> > 28046 Madrid
> > Tel: +34 91 454 96 94
> > Fax +34 91 541 42 64
> > jll.es
> >
> > S guenos en:
> > Twitter<https://twitter.com/JLLSpain><https://twitter.com/JLLSpain> I
> >
> Linkedin<https://www.linkedin.com/profile/view?id=173156047&trk=nav_re
> >
> sponsive_tab_profile><https://www.linkedin.com/profile/view?id=1731560
> > 47&trk=nav_responsive_tab_profile> I
> >
> Youtube<https://www.youtube.com/user/joneslanglasallesp><https://ww
> w.y
> > outube.com/user/joneslanglasallesp> I
> > Blog<http://www.jllinmuebles.es/elblogdelosanillos/><http://www.jllinm
> > uebles.es/elblogdelosanillos/> PPiense en el medio ambiente antes de
> > imprimir este e-mail
> >
> > Los datos personales que en esta comunicaci n aparecen, as como los que
> nuestra empresa mantiene de Vd. y de su empresa, son tratados con la
> finalidad de mantener el contacto as como realizar las gestiones que en esta
> aparecen (Ley Org nica 15/1999, de 13 de diciembre, de Protecci n de Datos
> de Car cter Personal).
> > Puede ejercer sus derechos de acceso, rectificaci n, cancelaci n y oposici n
> dirigi ndose a
> atencion.clientesth en tasacionesh.com<mailto:atencion.clientesth en tasacione<mailto:atencion.clientesth en tasacionesh.com%3cmailto:atencion.clientesth en tasacionesh.com%3e%3cmailto:atencion.clientesth en tasacionesh.com%3e%3cmailto:atencion.clientesth en tasacionesh.com>
> sh.com><mailto:atencion.clientesth en tasacionesh.com><mailto:atencion.clie<mailto:atencion.clientesth en tasacionesh.com%3cmailto:atencion.clientesth en tasacionesh.com%3e%3cmailto:atencion.clientesth en tasacionesh.com%3e%3cmailto:atencion.clientesth en tasacionesh.com>
> ntesth en tasacionesh.com<mailto:atencion.clientesth en tasacionesh.com%3cmailto:atencion.clientesth en tasacionesh.com%3e%3cmailto:atencion.clientesth en tasacionesh.com%3e%3cmailto:atencion.clientesth en tasacionesh.com>>.
> > La utilizaci n de su direcci n de correo electr nico por parte de nuestra
> empresa queda sujeta a las disposiciones de la Ley 34/2002, de Servicios de la
> Sociedad de la Informaci n y el Comercio Electr nico. Si Vd. recibe comunicaci
> n comercial por nuestra parte y desea dejar de recibirla, rogamos nos lo
> comunique por v a electr nica a trav s de la direcci n
> atencion.clientesth en tasacionesh.com<mailto:atencion.clientesth en tasacione<mailto:atencion.clientesth en tasacionesh.com%3cmailto:atencion.clientesth en tasacionesh.com>
> sh.com<mailto:atencion.clientesth en tasacionesh.com%3cmailto:atencion.clientesth en tasacionesh.com>>
> <mailto:atencion.clientesth en tasacionesh.com><mailto:atencion.clientesth@<mailto:atencion.clientesth en tasacionesh.com>
> tasacionesh.com<mailto:atencion.clientesth en tasacionesh.com>> .
> >
> >
> > JLL Valoraciones
> > Registration number: A-28/806222.
> > Registered Office: P de la Castellana, 130 - 1 ; 28046 Madrid
> >
> > This e-mail is for the use of the intended recipient(s) only. If you
> > have received this e-mail in error, please notify the sender
> > immediately and then delete it. If you are not the intended recipient,
> > you must not use, disclose or distribute this e-mail without the
> > author's prior permission. We have taken precautions to minimise the
> > risk of transmitting software viruses, but we advise you to carry out
> > your own virus checks on any attachment to this message. We cannot
> > accept liability for any loss or damage caused by software viruses. If
> > you are the intended recipient and you do not wish to receive similar
> > electronic messages from us in future then please respond to the
> > sender to this effect
> >
> > [[alternative HTML version deleted]]
> >
> >
> >
> >
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org<mailto:R-help-es en r-project.org<mailto:R-help-es en r-project.org%3cmailto:R-help-es en r-project.org>>
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
> >
> >
> > --
> > Miguel Ángel Rodríguez Muíños
> > Asesoramento en Informática
> > Dirección Xeral de Saúde Pública
> > Consellería de Sanidade
> > Xunta de Galicia
> > http://dxsp.sergas.es
> >
> >
> >
> >
> >
> >
> > ________________________________
> >
> > Nota: A información contida nesta mensaxe e os seus posibles documentos
> adxuntos é privada e confidencial e está dirixida únicamente ó seu
> destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe,
> por favor elimínea. A distribución ou copia desta mensaxe non está
> autorizada.
> >
> > Nota: La información contenida en este mensaje y sus posibles
> documentos adjuntos es privada y confidencial y está dirigida únicamente a
> su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje,
> por favor elimínelo. La distribución o copia de este mensaje no está
> autorizada.
> >
> > See more languages: http://www.sergas.es/aviso-confidencialidad
> >
> > [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-help-es mailing list
> > R-help-es en r-project.org<mailto:R-help-es en r-project.org>
> > https://stat.ethz.ch/mailman/listinfo/r-help-es
[[alternative HTML version deleted]]
Más información sobre la lista de distribución R-help-es