使用spark 1.6.1。
有一些奇怪的情况:两个表:timeevents和apps都有密钥id - 设备,当我这样做时:
从timeevents中选择设备 - 返回的记录数为60865
从timeevents中选择distince设备 - 返回的记录数为60865
从应用中选择设备 - 记录:112071
从应用中选择不同的设备 - 记录:112071
我跑的时候:
从应用中选择应用。
*
,timeevents。*
LEFT OUTER JOIN timeevents ON apps.device = timeevents.device
返回的记录数是112073 ......
我检查了 - 输出 - 我有2个额外的行具有相同的设备ID ... 我做错了吗?
我期待112071 - 只是应用表中的数字......
编辑:按建议尝试:SELECT device FROM timeevents GROUP BY device HAVING COUNT(*) > 1
return 0
SELECT device FROM apps GROUP BY device HAVING COUNT(*) > 1
return 0
SELECT device FROM timeevents GROUP BY device HAVING COUNT(1) < 2
return 60865
SELECT device FROM apps GROUP BY device HAVING COUNT(1) < 2
return 112071
编辑: 抱歉我的错 - 在timeevents设备中没有注意到它(原始RDD)是字符串,在应用程序中很长...仍然没有解释行为但是当我强迫它们在 - 没有更多的神秘行。 UFFF ...
感谢您的帮助!!
答案 0 :(得分:3)
您的加入不是一对一的。在timeevents
表格中查找重复项:
SELECT device
FROM timeevents
GROUP BY device
HAVING COUNT(*) > 1;