spark의 zeppelin에서 테스트한 python스크립트 spark-submit, spark-shell 중 어떤걸로 실행시켜야 작동하나요?

조회수 603회

linux에 spark과 zeppelin을 설치해서 사용중인데 zeppelin에서 python스크립트를 선택하고 아래와 같이 코드를 작성해서 테스트했습니다. 정상적으로 동작은 하는데 실제 linux에서 crontab에 등록하려하니 spark-submit, spark-shell 중에 뭘로 실행시켜야할지 모르겠네요... zeppelin에 있는 코드 그대로 적어보겠습니다.

%pyspark
sc.stop()
from pyspark import SparkConf, SparkContext, SQLContext
from pyspark.sql.functions import explode, col
import json


conf = SparkConf().setMaster("spark://sparkmst:7077").setAppName("TEST")
sc = SparkContext(conf = conf)
sqlContext = SQLContext(sc)
path = "file:///home/data/test.json"
df = sqlContext.read.json(path)

df1 = df.select(col('data.param.servers'))

df2 = df1.withColumn("srv_name",col('servers.srv_name')[0])\
.withColumn("srv_serial",col('servers.srv_serial')[0])\
.withColumn("groups",explode(col('servers.groups')[0]))\
.withColumn("group_id", col('groups.group_id'))\
.withColumn("items", col('groups.items')[0])\
.withColumn("item_id", col("items.item_id"))\
.withColumn("item_param", col("items.item_param"))\
.withColumn("item_time", col("items.item_time"))\
.withColumn("item_value", col("items.item_value"))\
.drop("servers","groups","items")

df2.show()

참고로 아래와 같이 경로잡고 실행시켰는데 둘 다 실패했습니다.

/home/spark/bin/spark-submit /home/python_script/test.py
/home/spark/bin/spark-submit /home/python_script/test.spark
/home/spark/bin/spark-shell /home/python_script/test.py
/home/spark/bin/spark-submit /home/python_script/text.py

네 개 모두 실행 시켰는데 동작하지를 않네요... zeppelin에서 돌듯이 정상적으로 실행시키려면 어떻게 해야할까요?

  • /home/spark/bin/pyspark 으로 실행시켜서 shell에서 코드를 실행시키니 정상 작동합니다. 그런데 해당코드를 어떤 확장자로 저장해서 사용해야하나요? /home/spark/bin/pyspark 경로/text.py, 경로/text.spark 모두 작동을 안합니다. 김재민 2020.6.25 07:37
  • 리눅스에서 일반적인 python 실행할때에는 확장자 없어도 상관 없습니다. 김호원 2020.6.25 14:58
  • cat test.spark | /home/spark/bin/pyspark 으로 실행시켜서 성공했습니다. 김재민 2020.6.26 11:27

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)