Я совершенно новичок в наборе данных Spark SQL.
Ниже приведена таблица набора данных, состоящая из нескольких столбцов, как показано ниже.
+---+--------+--------+-----------+---------+---------+--------------------+--------+----------+----------+
|avg|badCount|effectID|globalCount|goodCount|paramType| ratio| tool| toolName|totalCount|
+---+--------+--------+-----------+---------+---------+--------------------+--------+----------+----------+
|0.0| 32.0| 0.0| 84.0| 52.0| CAT| 0.38095238095238093| tool| litho_c3| 1001.0|
|0.0| 0.0| 0.0| 85.0| 85.0| CAT| 0.0| tool| litho_c1| 1001.0|
|0.0| 0.0| 0.0| 75.0| 75.0| CAT| 0.0| tool| litho_c7| 1001.0|
|0.0| 0.0| 0.0| 97.0| 97.0| CAT| 0.0| tool| litho_c6| 1001.0|
|0.0| 0.0| 0.0| 86.0| 86.0| CAT| 0.0| tool| litho_c10| 1001.0|
|0.0| 0.0| 0.0| 95.0| 95.0| CAT| 0.0| tool| litho_c8| 1001.0|
|0.0| 0.0| 0.0| 79.0| 79.0| CAT| 0.0| tool| litho_c9| 1001.0|
|0.0| 0.0| 0.0| 65.0| 65.0| CAT| 0.0| tool| litho_c2| 1001.0|
|0.0| 0.0| 0.0| 87.0| 87.0| CAT| 0.0| tool| litho_c12| 1001.0|
|0.0| 0.0| 0.0| 82.0| 82.0| CAT| 0.0| tool| litho_c4| 1001.0|
|0.0| 0.0| 0.0| 79.0| 79.0| CAT| 0.0| tool| litho_c5| 1001.0|
|0.0| 0.0| 0.0| 87.0| 87.0| CAT| 0.0| tool| litho_c11| 1001.0|
|0.0| 32.0| 0.0| 1001.0| 969.0| CAT| 0.03196803196803197| recipe|r_ 15 _1.1| 1001.0|
|0.0| 12.0| 0.0| 335.0| 323.0| CAT| 0.03582089552238806|operator| c2_o3| 1001.0|
|0.0| 10.0| 0.0| 328.0| 318.0| CAT| 0.03048780487804878|operator| c1_o3| 1001.0|
|0.0| 10.0| 0.0| 338.0| 328.0| CAT|0.029585798816568046|operator| c3_o3| 1001.0|
|0.0| 32.0| 0.0| 248.0| 216.0| CAT| 0.12903225806451613| mask| mask_3| 1001.0|
|0.0| 0.0| 0.0| 263.0| 263.0| CAT| 0.0| mask| mask_2| 1001.0|
|0.0| 0.0| 0.0| 245.0| 245.0| CAT| 0.0| mask| mask_4| 1001.0|
|0.0| 0.0| 0.0| 245.0| 245.0| CAT| 0.0| mask| mask_1| 1001.0|
+---+--------+--------+-----------+---------+---------+--------------------+--------+----------+----------+
Что я хочу сделать, это извлечь две строкикоторый имеет самое высокое значение отношения в соответствии с инструментом столбца.
Например, в инструменте operator
самое высокое значение отношения - 0.03582089552238806
и 0.03048780487804878
.Поэтому я хочу извлечь ниже двух строк из трех строк в инструменте operator
.
|0.0| 12.0| 0.0| 335.0| 323.0| CAT| 0.03582089552238806|operator| c2_o3| 1001.0|
|0.0| 10.0| 0.0| 328.0| 318.0| CAT| 0.03048780487804878|operator| c1_o3| 1001.0|
Таким образом, итоговая таблица выглядит следующим образом.
+---+--------+--------+-----------+---------+---------+--------------------+--------+----------+----------+
|avg|badCount|effectID|globalCount|goodCount|paramType| ratio| tool| toolName|totalCount|
+---+--------+--------+-----------+---------+---------+--------------------+--------+----------+----------+
|0.0| 32.0| 0.0| 84.0| 52.0| CAT| 0.38095238095238093| tool| litho_c3| 1001.0|
|0.0| 0.0| 0.0| 85.0| 85.0| CAT| 0.0| tool| litho_c1| 1001.0|
|0.0| 32.0| 0.0| 1001.0| 969.0| CAT| 0.03196803196803197| recipe|r_ 15 _1.1| 1001.0|
|0.0| 12.0| 0.0| 335.0| 323.0| CAT| 0.03582089552238806|operator| c2_o3| 1001.0|
|0.0| 10.0| 0.0| 328.0| 318.0| CAT| 0.03048780487804878|operator| c1_o3| 1001.0|
|0.0| 32.0| 0.0| 248.0| 216.0| CAT| 0.12903225806451613| mask| mask_3| 1001.0|
|0.0| 0.0| 0.0| 263.0| 263.0| CAT| 0.0| mask| mask_2| 1001.0|
Обратите внимание, что инструмент recipe
имеет только одну строку, поэтому он извлекает только одну строку.
Как решить мою проблему с помощью набора данных Spark?