采用scala提取column中的二维数组

csdnhhq 2017-06-21 05:22:01

我从一个xml文件中倒入了一个列,这个列的内容是[3.0,1],[3.0,2],[3.0,3]这种二维数组,其中后一个数1,2,3是其索引。我用下面赋值模拟出来了。
scala> val df1 = sc.parallelize(List(("[34.0,1],[34.0,2],[175.0,3]", 30), ("[3.0,1],[3.0,2],[3.0,3]", 36), ("[127.0,1],[127.0,2],[127.0,3]", 27))).toDF("infoComb", "age")
df1: org.apache.spark.sql.DataFrame = [infoComb: string, age: int]

scala> df1.show(false)
+-----------------------------+---+
|infoComb |age|
+-----------------------------+---+
|[34.0,1],[34.0,2],[175.0,3] |30 |
|[3.0,1],[3.0,2],[3.0,3] |36 |
|[127.0,1],[127.0,2],[127.0,3]|27 |
+-----------------------------+---+

我的问题是:我怎么样在scala中把[127.0,1]的127.0取出来?

麻烦各位大侠看看。
...全文
811 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
斯温jack 2017-08-04
  • 打赏
  • 举报
回复
收回前一个答案,既然spark对于相应的列有了类型上的规定,当然是可以 进行遍历的。 我记得好像是wrapped 序列相关 你可以尝试对于该df进行map操作 使用getAS[T] 函数将相应的列转换为你需要的模板序列类型, 之后再装换成你想要的类型(调用若干to函数) 如果你有intellji idea这样的推断编辑器,可以将要使用的类型直接显示 出来,如在intelllji idea中使用 alt + enter 光标停在的那个对象就会显示出它的类型。
斯温jack 2017-06-21
  • 打赏
  • 举报
回复
你可能要试一试正则
csdnhhq 2017-06-21
  • 打赏
  • 举报
回复
其实虽然模拟了,但是数据类型不同,在数据库中infoComb 这个字段是以array<struct<_VALUE:double,_i:bigint>> 这种数据类型存在

1,258

社区成员

发帖
与我相关
我的任务
社区描述
Spark由Scala写成,是UC Berkeley AMP lab所开源的类Hadoop MapReduce的通用的并行计算框架,Spark基于MapReduce算法实现的分布式计算。
社区管理员
  • Spark
  • shiter
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧