У меня есть запрос Hive, который возвращает данные в этом формате:
ip, category, score
1.2.3.4, X, 5
10.10.10.10, A, 2
1.2.3.4, Y, 2
12.12.12.12, G, 10
1.2.3.4, Z, 9
10.10.10.10, X, 3
В PySpark я получаю это через hive_context.sql(my_query).rdd
Каждый IP-адрес может иметь несколько баллов (следовательно, несколько строк). Я хотел бы получить эти данные в формате json / array следующим образом:
{
"ip": "1.2.3.4",
"scores": [
{
"category": "X",
"score": 10
},
{
"category": "Y",
"score": 2
},
{
"category": "Z",
"score": 9
},
],
"ip": "10.10.10.10",
"scores": [
{
"category": "A",
"score": 2
},
{
"category": "X",
"score": 3
},
],
"ip": "12.12.12.12",
"scores": [
{
"category": "G",
"score": 10
},
],
}
Обратите внимание, что СДР не обязательно сортируется и СДР может легко содержать пару сотен миллионов строк. Я новичок в PySpark, поэтому любые советы о том, как сделать это эффективно, помогут.