Pyspark Groupby и считать строку в массиве - PullRequest
0 голосов
/ 26 апреля 2019

У меня есть фрейм данных, который читает из файла JSON Twitter.

Я пытаюсь найти количество всех URL в моем наборе данных.URL-адреса хранятся в массиве строк.Итак, у некоторых объектов есть 1 URL, а у некоторых - несколько, как показано ниже: enter image description here

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

Я использую следующее, но это не показывает мне желаемый результат:

print(withURLenglish.groupby('entities.urls.expanded_url').count().sort(desc('count')).show(n=1500,truncate=False))

'entity.urls.expanded_url' возвращает столбец, который является массивом строк

мой фрейм данных определен в следующей переменной:

data = df.na.drop(subset=["user.id"]).select(["user","text","entities", "lang"])
withURLenglish = data.filter(size(data['entities.urls']) > 0).filter(data['lang']=='en').select(["user","text","entities", "lang"])

, и схема выглядит следующим образом: enter image description here

print(withURLenglish.head())

будет производить:

Row (user = Row (contributors_enabled = False, creation_at = 'Пн. Сен. 22 20:19:17 +0000 2008', default_profile = False, default_profile_image = False, description = 'Мои твиты похожи на ziti.', favourites_count = 605, follow_request_sent = Нет, последователей_count = 518, следующих = Нет, friends_count = 495, geo_enabled = True, id = 16409225, id_str =' 16409225 ', is_translator = False, lang =' en ', перечисленный_count = 17,location = 'тот же город', name = 'bojack horton', уведомления = нет, profile_background_color = 'FFFFFF', profile_background_image_url = 'http://pbs.twimg.com/profile_background_images/502679497120837632/BxqZlfVD.jpeg', profile_background_image_url_https =' https://pbs.twimg.com/profile_background_images/502679497120837632/BxqZlfVD.jpeg', profile_background_tile = True, profile_banner_url1031 *https://pbs.twimg.com/profile_banners/16409225/1398568361', профильe_image_url = 'http://pbs.twimg.com/profile_images/509891854360264704/R9q_xrfd_normal.jpeg', profile_image_url_https =' https://pbs.twimg.com/profile_images/509891854360264704/R9q_xrfd_normal.jpeg', profile_link_color = '121444', profile_sidebar_border_color = 'FFFFFF', profile_sidebar_fill_color = 'FAFEFF', profile_text_color = '243536', profile_use_background_image = False, защищенный = False,screen_name = 'aehorton', statuses_count = 43978, time_zone = 'Восточное время (США и Канада)', url = 'http://wtfismikewearing.tumblr.com/', utc_offset = -18000, подтверждено = False), текст =' RT @ComplexMag: радиостанцииПереходя только на классический хип-хоп, мы видим повышение рейтинга.http://tgegregergeg.co/Fn81nNs68R http://tssdfsfsf.co/UvBQ4MDbu9', entity = Row (hashtags = [], media = None, символы = [], тренды = [], urls = [Row (display_url = 'trib.al / htg6YTP',extended_url = 'http://trib.al/htg6YTP', indexs = [95, 117], url =' http://tregregergge.co/Fn81nNs68R'), Row (display_url = 'pic.twitter.com / UvBQ4MDbu9', extended_url = 'http://twitter.com/ComplexMag/status/549700671382233088/photo/1', индексов= [118, 140], url = 'http://tsdfsfdsf.co/UvBQ4MDbu9')], user_mentions = [Row (id = 13049362, id_str =' 13049362 ', индексы = [3, 14], name =' Complex ', screen_name =' ComplexMag ')]), lang = 'en')

Любые идеи очень ценятся.

...