【发布时间】:2018-08-07 12:50:09
【问题描述】:
我正在使用 spark 中的两个模式,table1 和 table2:
scala> table1.printSchema
root
|-- user_id: long (nullable = true)
|-- item_id: long (nullable = true)
|-- value: double (nullable = true)
scala> table2.printSchema
root
|-- item_id: long (nullable = true)
|-- user_id: long (nullable = true)
|-- value: double (nullable = true)
但是,我从不同的来源创建了这两个。基本上,它们中的每一个都持有 (user_id, item_id) 对的 value 信息,这是一种浮点数据类型,因此容易出现浮点错误。例如,一个表中的 (1, 3, 4) 由于其他计算,可以在另一个表中存储为 (1, 3, 3.9998..)。
我需要从table1 中删除带有 (user_id, item_id) 对(保证成对唯一)的行,这些行也存在于table2 中。像这样的:
scala> table1.except(table2)
但是,除了何时确定两行相同之外,没有其他方法可以判断,在这种情况下就是(user_id,item_id)。我需要忽略value。
如何使用 spark-sql 做到这一点?
【问题讨论】:
标签: scala apache-spark apache-spark-sql