Как отправить кучу записей данных в API с помощью PySpark - PullRequest
1 голос
/ 24 сентября 2019

Как выполнить пакетную отправку кортежей данных в API.

headers = {
    'Content-Type': 'application/json',
    'Accept': '*/*'
}

data = {"some_key": "some_value", "another_key": "another_value" }
r = requests.post('https://api.somewhere/batch', params={}, headers=headers, json=data)

Если полезная нагрузка JSON получена из DataFrame в PySpark, как я могу воспользоваться преимуществами Spark для пакетной обработки этого в настоящее время однопоточного подхода?

1 Ответ

2 голосов
/ 24 сентября 2019

Вы можете преобразовать кадр данных в JSON:

def batch_json(row):
    # Anything you want to process with every row/partition
    r = requests.post('https://api.somewhere/batch', params={}, headers=headers, json=row)
    print(r.status_code)

df.toJSON().foreach(batch_json)

# OR 
# "batch_json" cannot be used as it is, you will have to change it according to your need

df.toJSON().foreachPartition(batch_json)

Код быстрого тестирования:

def batch(row):
    print(row)

df.toJSON().foreach(batch)
...