[ 
https://issues.apache.org/jira/browse/SPARK-6817?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15095776#comment-15095776
 ] 

Antonio Piccolboni commented on SPARK-6817:
-------------------------------------------

My question made sense only wrt the block or vectorized design. If you are 
implementing plain-vanilla UDFs in R, my questions is meaningless. The 
performance implications of calling an R function for each row are ominous so I 
am not sure why you are going down this path. Imagine you want to add a column 
with random numbers from a distribution. You can use a regular UDF on each row 
or a block UDF on a block of a million rows. That means a single R call vs a 
million.

system.time(rnorm(10^6))
   user  system elapsed 
  0.089   0.002   0.092 
> z = rep_len(1, 10^6); system.time(sapply(z, rnorm))
   user  system elapsed 
  4.272   0.317   4.588 

That's 45 times slower. Plus R is choke full of vectorized functions. There are 
no builtin scalar types  in R. So there are plenty of examples of block UDF 
that one can write in R efficiently (no interpreter loops of any sort.

> DataFrame UDFs in R
> -------------------
>
>                 Key: SPARK-6817
>                 URL: https://issues.apache.org/jira/browse/SPARK-6817
>             Project: Spark
>          Issue Type: New Feature
>          Components: SparkR, SQL
>            Reporter: Shivaram Venkataraman
>         Attachments: SparkR UDF Design Documentation v1.pdf
>
>
> This depends on some internal interface of Spark SQL, should be done after 
> merging into Spark.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to