scala> val items = Row(1 -> "orange", 2 -> "apple")

items: org.apache.spark.sql.catalyst.expressions.Row =
[(1,orange),(2,apple)]


If you literally want an iterator, then this:


scala> items.toIterator.count { case (user_id, name) => user_id == 1 }

res0: Int = 1


...else:


scala> items.count { case (user_id, name) => user_id == 1 }

res1: Int = 1

On Mon, Dec 15, 2014 at 11:04 AM, Jerry Lam <chiling...@gmail.com> wrote:
>
> Hi spark users,
>
> Do you know how to access rows of row?
>
> I have a SchemaRDD called user and register it as a table with the
> following schema:
>
> root
>  |-- user_id: string (nullable = true)
>  |-- item: array (nullable = true)
>  |    |-- element: struct (containsNull = false)
>  |    |    |-- item_id: string (nullable = true)
>  |    |    |-- name: string (nullable = true)
>
>
> val items=sqlContext.sql("select items from user where user_id = 1").first
>
> The type of items is org.apache.spark.sql.Row. I want to iterate through
> the items and count how many items that user_id = 1 has.
>
> I could not find a method in which I can do that. The farthest I can get
> to is to convert items.toSeq. The type information I got back is:
>
> scala> items.toSeq
> res57: Seq[Any] = [WrappedArray([1,orange],[2,apple])]
>
> Any suggestion?
>
> Best Regards,
>
> Jerry
>

Reply via email to