数据框中的“colA”列包含整数值:
+-----+
| colA|
+-----+
| 1|
| 2|
| 1|
| 3|
+-----+
这些整数值可以通过Redis字典映射到字符串:
+----+------+
| key| value|
+----+------+
| 1| a|
| 2| b|
| 3| c|
+----+------+
我需要创建一个新列“colB”,它将包含“colA”到字符串值的映射:
+-----+-----+
| colA| colB|
+-----+-----+
| 1| a|
| 2| b|
| 1| a|
| 3| c|
+-----+-----+
我的目标是向Redis发出批量请求,以避免每行单个Redis请求的延迟。
在Spark Core API(即RDD)中,我可以使用mapPartitions函数执行此操作。有没有办法通过使用Spark SQL API来实现相同的目标?
请注意,我希望避免以下开销:
答案 0 :(得分:0)
请注意,我希望避免以下开销:
- ...
- 通过直接在数据帧上调用mapPartitions来关联编码器。
这实际上使它变得不可能。任何不使用SQL DSL的操作都需要解码为外部类型并编码回内部类型。对于原始值,如果使用二进制编码器,则它是低成本操作,但它仍然需要Encoder
。