我有一个Cassandra表-测试:
+----+---------+---------+
| id | country | counter |
+====+=========+=========+
| A | RU | 1 |
+----+---------+---------+
| B | EN | 2 |
+----+---------+---------+
| C | IQ | 1 |
+----+---------+---------+
| D | RU | 3 |
+----+---------+---------+
我还有一个表main在同一个空间中,列“country\u main”和“main\u id”。在main\u id列中,我有和test table中相同的id,还有一些惟一的id。country\u main的值为空,与test中的值相同。例如:
+---------+--------------+---------+
| main_id | country_main | ...|
+=========+==============+=========+
| A | | ...|
+---------+--------------+---------+
| B | EN | ...|
+---------+--------------+---------+
| Y | IQ | ...|
+---------+--------------+---------+
| Z | RU | ...|
+---------+--------------+---------+
如何使用pyspark根据ids填充country\u main中的空值,将测试表中的数据插入main?
1条答案
按热度按时间au9on6nz1#
具有以下架构和数据:
应该是这样的:
代码的作用:
从中选择所有行
ct2
(与您的main
表)其中country_main
是null
;执行连接
ct1
(与您的test
表)从中获取country的值(优化可以是从两个表中只选择必要的列)。另外,请注意,连接是由spark完成的,而不是在cassandra级别上-cassandra级别的连接将仅在即将发布的spark cassandra connector版本(3.0,但alpha版本已经发布)中受支持;重命名列以匹配
ct2
表格;写回数据。
结果:
对于源数据: