pyspark разделяет значения Mutliple и назначает другую переменную - PullRequest
0 голосов
/ 02 апреля 2020

Это может быть простой вопрос, но я не могу двигаться вперед, так как я только начал изучать pyspark

У меня есть текстовый файл hug, и он имеет следующие значения

231838: 232339  
460667: 4967166 387247  
290099: 53729 84707 387247 1593933 2142297 2638860 2795500 2811682 3035561 3048342 3072654 3112123 3277127 3349725 3681900 3893671 4306429 4306431 4847611 4966546 5601388  
392951: 40168 57000 161350 462315 505135 506843 669807 789322 801042 900408 900445 1219904 1574331 1804986 2496688 2511269 2632198 2934273 3211510 3262717 3687835 3822544 3850181 4276958 4302220 4333543 4498476 4926337 5573922 5661442 5697736  
328396: 328397  

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

Каждая строка начинается с идентификатора страницы , за которым следует список всех страниц, например, перед двоеточием (:) называется ID, после двоеточия (:) называется ссылками, ссылки могут быть разделены пробелом

в python быть таким, но как применить пример логики c в pyspark

ids = []
links = []
result = []

def returnOrphanIds():
  for line in lines:
      str = line.split(":")
      ids.append(str[0])
      links.extend(str[1].split(" "))
  for id in ids:
      if id not in links:
          result.append(id)
return result



1 Ответ

0 голосов
/ 02 апреля 2020

В принципе, есть две проблемы, которые необходимо решить:

  1. Разобрать ваши данные: я оставлю это вам как задачу, это довольно просто сделать в Spark, все вам нужно это trim и split функций.

  2. Удалить ссылки из столбца идентификаторов.

в тот момент я пошел с взрывом links столбец и вычитая его из id столбца.

df.select("id").subtract(df.select(F.explode("links")))

Но я предполагаю, что это будет ОЧЕНЬ неэффективно (по крайней мере, хотя работа будет выполнена). Если у кого-нибудь есть предложения, как решить эту проблему более эффективно, я хотел бы знать!

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