2017-01-24 34 views
12

Mam PySpark RDD zaimportowany z plików JSON. Elementy danych zawierają pewną liczbę wartości, które nie są pożądane. Ze względu na argumenty tylko te znaki, które są string.printable powinny znajdować się w tych plikach JSON.Wyczyść nieprawidłowe znaki z danych przechowywanych w Spark RDD

Biorąc pod uwagę, że istnieje duża liczba elementów, które zawierają informacje tekstowe, próbowałem znaleźć sposób mapowania przychodzącego RDD do funkcji czyszczenia danych i zwracania oczyszczonego RDD jako danych wyjściowych. Mogę znaleźć sposoby drukowania oczyszczonego elementu z RDD, ale nie całą kolekcję elementów i wracam wtedy jako RDD.

Przykładowy dokument może wyglądać tak, jak pokazano poniżej, a niepożądane znaki mogą wkradać się do elementów userAgent, marketingReference i pageTags lub w ogóle do elementów tekstowych.

{ 
    "documentId": "abcdef12-1234-5678-fedc-cba", 
    "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-cba" 
     } 
    } 
} 
+0

Czy możesz podać próbkę RDD (np. Używając polecenia rdd.take (5))? – Yaron

+0

Niestety nie z powodu poufności danych. –

+1

Czy możesz udostępnić format RDD, zamiast rzeczywistych wartości możesz użyć "key1", "value1", etc. Interesuje mnie struktura danych, a nie rzeczywista treść. – Yaron

Odpowiedz

1

Problem polegał na próbie uporządkowania danych w dół, dla których istniały złe (lub całkowicie nieobecne) praktyki w zakresie jakości danych.

Ostatecznie przyjęto, że próbujemy rozwiązać problem, a nie przyczynę. Okazało się, że koszt retrospektywnego ustalenia danych był znacznie większy niż koszt właściwego przetwarzania danych.

+0

To prawda, Dave, przygotowanie danych w etapach poprzedzających proces zapewnia, że ​​w dalszych systemach będzie mniej problemów. – dumitru