[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