У меня есть два фрейма данных с разным количеством строк, например:
val df = sc.parallelize(Array((0, 1.0, 0.4, 0.1),
(1, 0.9, 0.3, 0.3),
(2, 0.2, 0.9, 0.2),
(3, 0.9, 0.2, 0.2)))
.toDF("id", "prop1", "prop2", "prop3")
val df2 = sc.parallelize(Array((0, 3.0, 0.2, 0.1),
(1, 0.9, 0.3, 0.3),
(2, 0.2, 0.5, 0.2),
(3, 0.8, 0.1, 0.1),
(4, 0.3, 0.5, 0.5)))
.toDF("id", "prop1", "prop2", "prop3")
Я хотел бы присоединиться к ним, используя столбец id в качестве ключа, поэтому я делаю:
val joined = df2.join(df, df("id")===df2("id"), "leftouter")
joined.show()
+---+-----+-----+-----+----+-----+-----+-----+
| id|prop1|prop2|prop3| id|prop1|prop2|prop3|
+---+-----+-----+-----+----+-----+-----+-----+
| 0| 3.0| 0.2| 0.1| 0| 1.0| 0.4| 0.1|
| 1| 0.9| 0.3| 0.3| 1| 0.9| 0.3| 0.3|
| 2| 0.2| 0.5| 0.2| 2| 0.2| 0.9| 0.2|
| 3| 0.8| 0.1| 0.1| 3| 0.9| 0.2| 0.2|
| 4| 0.3| 0.5| 0.5|null| null| null| null|
+---+-----+-----+-----+----+-----+-----+-----+
на данный момент два вопроса:
- почему добавлен второй столбец id? как я могу избавиться от него?
- как поместить нулевые значения в ноль?