【发布时间】:2016-12-28 18:50:41
【问题描述】:
我需要做以下操作:选择rdd中的每个字段。 我必须在 Scala 中转换它,特别是第三行中的部分,选择每一列:
val rddHash=x.map(row =>(DigestUtils.sha1Hex(row(0).toString.getBytes("UTF-8")),row(1).toString)).reduceByKey((a,b)=>(a+b))
val z=rddHash.cartesian(rddHash)
val outRdd=z.map(m => (m(0)(0),(m(1)(0),euclidean(m(0)(1).split(','),m(1)(1).split(',')))))
X 是作为 (String,Object) 收费的数据集。
但是这段代码不起作用,问题是与我尝试通过 m(0)(0)、m(1)(0) 等选择元素的第三行相关的部分。 错误是:
<console>:42: error: ((String, String), (String, String)) does not take parameters
如何在 Scala 中选择 rdd 中的每个字段?
Ps 我在 pyspark 中的代码行如下:
outRdd=cartesian.map(lambda m: (m[0][0],(m[1][0],euclidean(m[0][1].split(','),m[1][1].split(',')))))
笛卡尔与之前显示的结构相同:
((String, String), (String, String))
【问题讨论】:
标签: scala apache-spark error-handling rdd