You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@spark.apache.org by HARIPRIYA AYYALASOMAYAJULA <ah...@gmail.com> on 2014/10/24 21:52:15 UTC
Function returning multiple Values - problem with using "if-else"
Hello,
My map function will call the following function (inc) which should yield
multiple values:
def inc(x:Int, y:Int)
={
if(condition)
{
for(i <- 0 to 7) yield(x, y+i)
}
else
{
for(k <- 0 to 24-y) yield(x, y+k)
for(j<- 0 to y-16) yield(x+1,j)
}
}
The "if" part works fine, but in the else part , if should return 2 sets
of values (from the first for loop and then from the second for loop). But,
only the values from second for loop (within else) are returned by the
function.
I tried alternative ways but I am unable to make the above function give me
the expected result.
Can someone help me understand how yield works, and what should be used in
place of yield to return multiple values when two for loops have to be
used.(like the test case in within else condition) - If it was in JAVA or
C, we could simply store the values in an array or a list and return the
same but I'm still not clear how it works in Scala/Spark.
Thank you for your time.
--
Regards,
Haripriya Ayyalasomayajula
Graduate Student
Department of Computer Science
University of Houston
Contact : 650-796-7112
Re: Function returning multiple Values - problem with using "if-else"
Posted by HARIPRIYA AYYALASOMAYAJULA <ah...@gmail.com>.
Thanks Sean!
On Fri, Oct 24, 2014 at 3:04 PM, Sean Owen <so...@cloudera.com> wrote:
> This is just a Scala question really. Use ++
>
> def inc(x:Int, y:Int) = {
> if (condition) {
> for(i <- 0 to 7) yield(x, y+i)
> } else {
> (for(k <- 0 to 24-y) yield(x, y+k)) ++ (for(j<- 0 to y-16)
> yield(x+1,j))
> }
> }
>
> On Fri, Oct 24, 2014 at 8:52 PM, HARIPRIYA AYYALASOMAYAJULA
> <ah...@gmail.com> wrote:
> > Hello,
> >
> > My map function will call the following function (inc) which should yield
> > multiple values:
> >
> >
> > def inc(x:Int, y:Int)
> > ={
> > if(condition)
> > {
> > for(i <- 0 to 7) yield(x, y+i)
> > }
> >
> > else
> > {
> > for(k <- 0 to 24-y) yield(x, y+k)
> > for(j<- 0 to y-16) yield(x+1,j)
> >
> > }
> > }
> >
> > The "if" part works fine, but in the else part , if should return 2
> sets of
> > values (from the first for loop and then from the second for loop). But,
> > only the values from second for loop (within else) are returned by the
> > function.
> >
> > I tried alternative ways but I am unable to make the above function give
> me
> > the expected result.
> >
> > Can someone help me understand how yield works, and what should be used
> in
> > place of yield to return multiple values when two for loops have to be
> > used.(like the test case in within else condition) - If it was in JAVA
> or
> > C, we could simply store the values in an array or a list and return the
> > same but I'm still not clear how it works in Scala/Spark.
> >
> > Thank you for your time.
> >
> > --
> > Regards,
> > Haripriya Ayyalasomayajula
> > Graduate Student
> > Department of Computer Science
> > University of Houston
> > Contact : 650-796-7112
>
--
Regards,
Haripriya Ayyalasomayajula
Graduate Student
Department of Computer Science
University of Houston
Contact : 650-796-7112
Re: Function returning multiple Values - problem with using "if-else"
Posted by Sean Owen <so...@cloudera.com>.
This is just a Scala question really. Use ++
def inc(x:Int, y:Int) = {
if (condition) {
for(i <- 0 to 7) yield(x, y+i)
} else {
(for(k <- 0 to 24-y) yield(x, y+k)) ++ (for(j<- 0 to y-16) yield(x+1,j))
}
}
On Fri, Oct 24, 2014 at 8:52 PM, HARIPRIYA AYYALASOMAYAJULA
<ah...@gmail.com> wrote:
> Hello,
>
> My map function will call the following function (inc) which should yield
> multiple values:
>
>
> def inc(x:Int, y:Int)
> ={
> if(condition)
> {
> for(i <- 0 to 7) yield(x, y+i)
> }
>
> else
> {
> for(k <- 0 to 24-y) yield(x, y+k)
> for(j<- 0 to y-16) yield(x+1,j)
>
> }
> }
>
> The "if" part works fine, but in the else part , if should return 2 sets of
> values (from the first for loop and then from the second for loop). But,
> only the values from second for loop (within else) are returned by the
> function.
>
> I tried alternative ways but I am unable to make the above function give me
> the expected result.
>
> Can someone help me understand how yield works, and what should be used in
> place of yield to return multiple values when two for loops have to be
> used.(like the test case in within else condition) - If it was in JAVA or
> C, we could simply store the values in an array or a list and return the
> same but I'm still not clear how it works in Scala/Spark.
>
> Thank you for your time.
>
> --
> Regards,
> Haripriya Ayyalasomayajula
> Graduate Student
> Department of Computer Science
> University of Houston
> Contact : 650-796-7112
---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@spark.apache.org
For additional commands, e-mail: user-help@spark.apache.org