【发布时间】:2019-10-24 04:09:33
【问题描述】:
在我的源数据中,我没有可以对数据进行分组的任何类别列。
所以,我想根据另一列 say("QNAME") 不同的值在 Spark 数据框中添加一个新的自定义类别列。我想在 Group By to Pivot 中使用它。
直到现在,我都不知道……如何获得这个。
假设我有以下源数据框
Qname b c d
SPT 1 10 555
MTK 2 20 556
NKP 3 30 557
LKM 4 40 558
SPT 5 50 559
MTK 7 70 561
QRS 6 60 560
NKP 7 70 561
SPT 5 50 559
LKM 7 70 561
QRS 7 70 561
MTK 7 70 561
NKP 7 70 561
因此,基于 column("QNAME") 值,我想对不同的值组合进行分类。 例如,不同的值是(SPT,MTK,NKP,LKM,QRS)...所以这个值的第一次出现将被标记为“aaa”,然后第二次出现将被标记为“bbb”等等。
所以,下面是预期的输出。
Category Qname b c d
"aaa" SPT 1 10 555
"aaa" MTK 2 20 556
"aaa" NKP 3 30 557
"aaa" LKM 4 40 558
"bbb" SPT 5 50 559
"bbb" MTK 7 70 561
"aaa" QRS 6 60 560
"bbb" NKP 7 70 561
"ccc" SPT 5 50 559
"bbb" LKM 7 70 561
"bbb" QRS 7 70 561
"ccc" MTK 7 70 561
"ccc" NKP 7 70 561
我正在使用 Scala 和 Spark 来执行此操作。 任何帮助或建议都可以解决这个问题。 提前致谢!
【问题讨论】:
-
QNAME 的每个不同值是否最多出现 26 次?否则,您将用完字母(“aaa”、“bbb”、...、“zzz”)
标签: python scala apache-spark apache-spark-sql