Мне нужно обогатить мой фрейм данных в PySpark-Sql атрибутом языка, который в основном говорит на языке названия статьи для каждой строки.Мне нужно отфильтровать только английские бумаги.У меня десятки миллионов документов, поэтому мне нужно сделать это параллельно.
Я зарегистрировал UDF, используя библиотеку Python с именем langdetect
(https://pypi.org/project/langdetect/), после установки библиотеки накластер. Я использую следующий код:
from langdetect import detect
def lang_detector(_s):
try:
lan = detect(_s)
except:
lan = 'null'
return lan
detect2 = udf(lang_detector, StringType())
papers_abs_fos_en = papers_abs \
.join(papersFos_L1, "PaperId") \
.withColumn("Lang", detect2(col("PaperTitle"))) \
.filter("Lang =='en'") \
.select("PaperId", "Rank", "PaperTitle", "RefCount", "CitCount", "FoSList")
Это работает, но это занимает вечность даже на названиях около 10 млн. Я не уверен, если это из-за langdetect
, UDF или еслиЯ просто делаю что-то не так, но буду благодарен за любое предложение!
Большое спасибо! Paolo