Агрегирование данных json с помощью pyspark - PullRequest
0 голосов
/ 17 мая 2019

В настоящее время я работаю с pyspark и большим набором данных языковых игр, который содержит несколько образцов в виде объектов json, как показано ниже.

Каждый из этих примеров представляет собой экземпляр игры, в которой какой-то человек имеетпрослушал аудиофайл на некотором разговорном языке, а затем должен выбрать один из четырех возможных языков, который только что услышал.

Теперь я хочу объединить все эти игры, скажем, в поле «target» и в «предположении».поле, а затем подсчитать количество игр для каждой пары («цель», «угадать»).Может кто-нибудь дать мне какую-то помощь в том, как это сделать?

Я уже посмотрел pyspark Документация , но, поскольку я довольно новичок в python / pyspark, это не так.я действительно не понимаю, как работает агрегатная функция.

{"target": "Turkish", "sample": "af0e25c7637fb0dcdc56fac6d49aa55e",
 "choices": ["Hindi", "Lao", "Maltese", "Turkish"],
 "guess": "Maltese", "date": "2013-08-19", "country": "AU"} 

1 Ответ

0 голосов
/ 17 мая 2019

Процесс преобразования данных json в фрейм данных pyspark может быть выполнен следующим образом.

from pyspark import SparkConf, SparkContext
from pyspark.sql import SQLContext
import json

sc = SparkContext(conf=SparkConf())
sqlContext = SQLContext(sc)

def convert_single_object_per_line(json_list):
    json_string = ""
    for line in json_list:
        json_string += json.dumps(line) + "\n"
    return json_string

json_list = [{"target": "Turkish", "sample": "af0e25c7637fb0dcdc56fac6d49aa55e",
 "choices": ["Hindi", "Lao", "Maltese", "Turkish"],
 "guess": "Maltese", "date": "2013-08-19", "country": "AU"}]


json_string = convert_single_object_per_line(json_list)

df = sqlContext.createDataFrame([json.loads(line) for line in json_string.splitlines()])


[In]:df
[Out]:
DataFrame[choices: array<string>, country: string, date: string, guess: string, sample: string, target: string]
[In]:df.show()
[Out]:
+--------------------+-------+----------+-------+--------------------+-------+
|             choices|country|      date|  guess|              sample| target|
+--------------------+-------+----------+-------+--------------------+-------+
|[Hindi, Lao, Malt...|     AU|2013-08-19|Maltese|af0e25c7637fb0dcd...|Turkish|
+--------------------+-------+----------+-------+--------------------+-------+

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...