我有一个带有字段transactionid的Dataframe,我想在这个字段上取样。我想对字段的散列进行采样,因为采样的数据将连接到另一个采样的Dataframe的样本,并且我希望在两个样本中具有相同的id。问题是我已经尝试过各种版本的过滤器,我一直在研究如何在过滤器中散列和修改
scala> val dfSampled = df.filter($"transactionId".hashCode() % 10 == 0)
<console>:27: error: overloaded method value filter with alternatives:
(conditionExpr: String)org.apache.spark.sql.DataFrame <and>
(condition: org.apache.spark.sql.Column)org.apache.spark.sql.DataFrame
cannot be applied to (Boolean)
val dfSampled = df.filter($"transactionId".hashCode() % 10 == 0)
^
`
有人能给我一些建议吗
1条答案
按热度按时间piztneat1#
这是不正确的,原因有两个:
可以获取列对象的哈希值,而不是
DataFrame
,您使用了错误的相等运算符。
正确的解决方案如下:
请注意,它正在使用
Murmur3Hash
不是散列码。