sds*_*sds 15 scala apache-spark apache-spark-sql
我已经Array[org.apache.spark.sql.Row]回来了sqc.sql(sqlcmd).collect():
Array([10479,6,10], [8975,149,640], ...)
Run Code Online (Sandbox Code Playgroud)
我可以得到个人价值观:
scala> pixels(0)(0)
res34: Any = 10479
Run Code Online (Sandbox Code Playgroud)
但他们Any不是Int.
我如何将它们提取出来Int?
最明显的解决方案不起作用:
scala> pixels(0).getInt(0)
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Int
Run Code Online (Sandbox Code Playgroud)
PS.我可以做pixels(0)(0).toString.toInt或pixels(0).getString(0).toInt,但他们感觉不对劲......
Jus*_*ony 13
使用getInt应该工作.这是一个人为的例子作为概念证明
import org.apache.spark.sql._
sc.parallelize(Array(1,2,3)).map(Row(_)).collect()(0).getInt(0)
Run Code Online (Sandbox Code Playgroud)
这回报1
然而,
sc.parallelize(Array("1","2","3")).map(Row(_)).collect()(0).getInt(0)
Run Code Online (Sandbox Code Playgroud)
失败.所以,看起来它是以字符串形式出现的,你必须手动转换为int.
sc.parallelize(Array("1","2","3")).map(Row(_)).collect()(0).getString(0).toInt
Run Code Online (Sandbox Code Playgroud)
该文件指出getInt:
将列i的值作为int返回.如果值不是整数,或者它是null,则此函数将抛出异常.
所以,它似乎不会试图为你施展
| 归档时间: |
|
| 查看次数: |
31350 次 |
| 最近记录: |