У меня есть ряд файлов, которые выглядят примерно так:
[
{
'id':1,
'transactions': [
{
'date': '2019-01-01',
'amount': 50.50
},
{
'date': '2019-01-02',
'amount': 10.20
},
]
},
{
'id':2,
'transactions': [
{
'date': '2019-01-01',
'amount': 10.20
},
{
'date': '2019-01-02',
'amount': 0.50
},
]
}
]
Я загружаю эти файлы в Spark, используя следующий код
users= spark.read.option("multiline", "true").json(file_location)
В результате получается кадр SparkData с двумя столбцами id
и transactions
, где transactions
- это тип StructType.
Я хочу иметь возможность "сопоставить" transactions
для пользователя, чтобы объединить их.
В настоящее время я использую rdd и функцию, которая выглядит следующим образом:
users.rdd.map(lambda a: summarize_transactions(a.transactions))
Функция суммирования может быть двух типов:
a) Превратить список объектов в Pandas Dataframe, чтобы суммировать его.
b) Перебирать список объектов, чтобы суммировать его.
Однако я узнаю, что a.transactions
- это список pyspark.sql.types.Row
. Вместо реальных словарей.
1) Это лучший способ достичь sh моей цели?
2) Как я могу превратить список Spark Rows в исходный список словарей?