특정 작업 (예 : NLTK 또는 BeautifulSoup)에 Python 라이브러리를 사용하려면 로컬 컴퓨터에서 Spark를 사용할 때 할 수 있지만 같은 것은 아닙니다. YARN에서 Spark와 작업하십시오.Python 라이브러리 작동 방법 Spark YARN
from pyspark.sql.functions import udf
from pyspark.sql.types import StringType
def html_parsing(x):
""" Cleans the text from Data Frame text column"""
textcleaned=''
#if row['desc'] is not None:
souptext=BeautifulSoup(x)
#souptext=BeautifulSoup(text)
p_tags=souptext.find_all('p')
for p in p_tags:
if p.string:
textcleaned+=p.string
#print textcleaned
#ret_list= (int(row['id']),row['title'],textcleaned)
return textcleaned
parse_html=udf(html_parsing,StringType())
sdf_cleaned=sdf_rss.dropna(subset=['desc']).withColumn('text_cleaned',parse_html('desc'))\
.select('id','title','text_cleaned')
sdf_cleaned.cache().take(3)
이 코드는 내 로컬 스파크에서 작동하며 HTML 태그를 청소 : 여기
은 샘플 코드입니다. 내가 원사에 스파크에 그것을 실행할 때, 다음과 같은 일을하고 말한다하지 않습니다File "/var/storage/nm-sdl1/nm-local/usercache/appcache/application_1485803993783_0664/container_1485803993783_0664_01_000002/pyspark.zip/pyspark/serializers.py", line 422, in loads
return pickle.loads(obj)
ImportError: No module named bs4
at org.apache.spark.api.python.PythonRunner$$anon$1.read(PythonRDD.scala:193)
at org.apache.spark.api.python.PythonRunner$$anon$1.<init>(PythonRDD.scala:234)
at org.apache.spark.api.python.PythonRunner.compute(PythonRDD.scala:152)
at org.apache.spark.sql.execution.python.BatchEvalPythonExec$$anonfun$doExecute$1.apply(BatchEvalPythonExec.scala:124)
이러한 모든 패키지가 클러스터에 설치된 내 아나콘다에 설치됩니다. 그러나 문제는이 패키지가 집행자에게 제공되지 않는다는 것입니다. 내 직감.
어떤 파이썬 패키지도 YARN의 Spark에서 작동시킬 수있는 방법이 있습니까?
알려 주시기 바랍니다.
좀 자세히 설명해 주시겠습니까? 나는 그것을 가지고 있는지 잘 모르겠습니다. 아나콘다에 라이브러리를 설치했습니다. 하지만 제가 Spark on Yarn에서 사용한다면, 저는 그 도서관이 유언 집행자들에게 이용 가능하다고 생각하지 않습니다. 그렇다면 실행 프로그램과 RDD 블록에서 작동하도록 사용하려면 어떻게해야합니까? 나는 그것이 "No module bs4"라고 말하는 원인이 될 것이라고 생각합니다. – Baktaawar
@Baktaawar 업데이트 된 답변보기 – santon
Well Pyspark는 Anaconda python만을 사용합니다. Pyspark 셸이 그것을 사용하고 그것을 볼 수 있습니다. 그것도 내 bash 프로필에있다. – Baktaawar