[R-es] Procesos paralelos

Javier Marcuzzi javier.ruben.marcuzzi en gmail.com
Mar Abr 12 22:22:12 CEST 2016


Estimado Gilsanz

Algo que puede ser, ¿tiene instalado tcltk en Windows?

Yo ante un problema parecido lo solucioné realizando un contador, en mi caso conozco la cantidad de consultas, entonces simplemente “imprimo” en pantalla 1 de 100, 2 de 100, etc.  No es gráfico, pero R me informa dos cosas, que está trabajando y cuánto falta, feo a la vista pero muy simple.

Javier Rubén Marcuzzi

De: Gilsanz, Jose Luis
Enviado: martes, 12 de abril de 2016 10:40
Para: Carlos J. Gil Bellosta ; Miguel Angel Rodriguez Muiños
CC: r-help-es
Asunto: Re: [R-es] Procesos paralelos

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]]

_______________________________________________
R-help-es mailing list
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