【发布时间】:2016-08-29 20:04:09
【问题描述】:
使用火花 1.6.1。
有一些奇怪的情况:两个表:timeevents 和 apps 都有 key id - device,当我这样做时:
从 timeevents 中选择设备 - 返回的记录数为 60865
从 timeevents 中选择区别设备 - 返回的记录数为 60865
从应用中选择设备 - 记录:112071
从应用中选择不同的设备 - 记录:112071
当我跑步时:
从应用程序中选择应用程序.
*, timeevents.*左外连接 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)中没有注意到它是字符串,在应用程序中是长的......仍然没有解释行为但是当我强制它们在两者中都是长时 - 没有更多神秘的行。噗……
感谢您的帮助!
【问题讨论】:
-
该设备必须有 2 个应用记录。它也必须在其他地方发生,因为您正在从另一台设备获得额外的记录
-
我不是最好的 spark...但是从 timeevents 组中选择设备,按 count(1) > 1 的设备应该为您提供重复的设备条目
标签: sql apache-spark