2017-02-21 1 views
0

특정 작업 (예 : 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에서 작동시킬 수있는 방법이 있습니까?

알려 주시기 바랍니다.

답변

0

내 생각 엔 아나콘다 경로를 가리 키도록 PYSPARK_PYTHON 환경 변수를 가리켜 야 할 것입니다.

기본적으로 Spark는 경로에서 찾은 첫 번째 파이썬 실행 파일을 찾습니다. 일반적으로 Python의 시스템 설치 (예 : /usr/bin/python)입니다. pacpark가 아나콘다 배포판이 설치된 곳을 알기 위해서는 PYSPARK_PYTHON 변수를 설정해야합니다. 예를 들어 파이썬 스크립트를 실행하거나 pyspark을 실행하기 전에 export PYSPARK_PYTHON=/path/to/anaconda/bin/python을 실행하십시오.

+0

좀 자세히 설명해 주시겠습니까? 나는 그것을 가지고 있는지 잘 모르겠습니다. 아나콘다에 라이브러리를 설치했습니다. 하지만 제가 Spark on Yarn에서 사용한다면, 저는 그 도서관이 유언 집행자들에게 이용 가능하다고 생각하지 않습니다. 그렇다면 실행 프로그램과 RDD 블록에서 작동하도록 사용하려면 어떻게해야합니까? 나는 그것이 "No module bs4"라고 말하는 원인이 될 것이라고 생각합니다. – Baktaawar

+0

@Baktaawar 업데이트 된 답변보기 – santon

+0

Well Pyspark는 Anaconda python만을 사용합니다. Pyspark 셸이 그것을 사용하고 그것을 볼 수 있습니다. 그것도 내 bash 프로필에있다. – Baktaawar

관련 문제