Очистить недействительные символы от данных, хранящихся в Spark RDD

У меня есть PySpark RDD, импортированный из файлов JSON. Элементы данных содержат ряд значений, которые имеют нежелательные символы. Для аргумента только те символы, которые являются string.printable, должны быть в этих файлах JSON.

Учитывая, что существует большое количество элементов, содержащих текстовую информацию, я пытался найти способ сопоставления входящего RDD с функцией очистки данных и возврата очищенного RDD в качестве вывода. Я могу найти способы печати очищенного элемента из RDD, но не весь набор элементов, а затем возвращать его как RDD.

Примерный документ может быть показан ниже, а нежелательные символы могут появляться в элементах userAgent, marketingReference и pageTags или даже в любом из текстовых элементов.

{
    "documentId": "abcdef12-1234-5678-fedc-cba9876543210",
    "documentType": "contentSummary",
    "dateTimeCreated": "2017-01-01T03:00:22.478Z"
    "body": {
        "requestUrl": "http://www.our-web-site.com/en-gb/line-of-business/product-category/irritating-guid/",
        "requestMethod": "GET",
        "responseCode": "200",
        "userAgent": "Mozilla/5.0 etc",
        "requestHeaders": {
            "connection": "close",
            "host": "www.our-web-site.com",
            "accept-language": "en-gb",
            "via": "1.1 www.our-web-site.com",
            "user-agent": "Mozilla/5.0 etc",
            "x-forwarded-proto": "https",
            "clientIp": "99.99.99.99",
            "referer": "http://www.our-web-site.com/en-gb/line-of-business/product-category/irritating-guid/",
            "accept-encoding": "gzip, deflate",
            "incap-client-ip": "99.99.99.99"
        },
        "body": {
            "pageId": "/content/our-web-site/en-gb/holidays/interstitial",
            "pageVersion": "1.0",

            "pageClassification": "product-page",
            "pageTags": "spark, python, rdd, other words",
            "MarketingReference": "BUYMEPLEASE",
            "referrer": "http://www.our-web-site.com/en-gb/line-of-business/product-category/irritating-guid/",
            "webSessionId": "abcdef12-1234-5678-fedc-cba9876543210"
        }
    }
}

Ответ 1

Проблема заключалась в том, чтобы очистить данные вниз по течению, для которых существовали плохие (или вообще отсутствующие) методы качества данных.

В конце концов было принято, что мы пытаемся решить проблему, а не причину. Было доказано, что стоимость ретроспективно фиксирующих данных значительно превышает стоимость обработки данных в первую очередь.