colab에서 pyspark를 돌리다가 lightgbm을 사용하려고 mmlspark를 install하고 아래와 같은 코드를 돌릴려고 하니 발생한 오류
from mmlspark.lightgbm import LightGBMRegressor
이 에러는 기본적으로는 spark에 필요한 패키지가 없어서 발생한 문제로 먼저 아래 명령어로 하둡과 스파크를 다운로드 받아준다.
!apt-get install openjdk-8-jdk-headless -qq > /dev/null
!wget -q https://www-us.apache.org/dist/spark/spark-2.4.7/spark-2.4.7-bin-hadoop2.7.tgz
!tar xf spark-2.4.7-bin-hadoop2.7.tgz
!pip install -q findspark
!pip install pyspark
자바와 스파크 환경변수 등록
import os
os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64"
os.environ["SPARK_HOME"] = "/content/spark-2.4.7-bin-hadoop2.7"
스파크 초기화
import findspark
findspark.init()
from pyspark.sql import SparkSession
spark = pyspark.sql.SparkSession.builder.appName("MyApp")\
.config("spark.jars.packages", "com.microsoft.ml.spark:mmlspark_2.11:0.18.1")\
.getOrCreate()
from mmlspark.lightgbm import LightGBMRegressor
#공식 홈페이지에는 아래와 같이 적혀있지만 동작하지 않는다.
import pyspark
spark = pyspark.sql.SparkSession.builder.appName("MyApp")\
.config("spark.jars.packages", "com.microsoft.ml.spark:mmlspark_2.11:1.0.0-rc1")\
.getOrCreate()
import mmlspark
위에 것들을 다 실행 해주면
멋진 스파크 문양이 나온다!
https://colab.research.google.com/github/asifahmed90/pyspark-ML-in Colab/blob/master/PySpark_Regression_Analysis.ipynb#scrollTo=9_Uz1NL4gHFx
https://github.com/Azure/mmlspark/issues/718
위에서 Erkan Sirin 검색
2020.11.18 수정
멋진 스파크 문양이 나오고 끝나는 줄 알았지만 아래와 같은 에러가 추가적으로 발생했다.
An error occurred while calling None.com.microsoft.ml.spark.lightgbm.LightGBMRegressor. : java.lang.NoClassDefFoundError: org/apache/spark/ml/util/MLWritable$class
찾았다... 스칼라 버전 문제 였다.
mmlspark는 scala 2.11에서만 돌아간다.
그런데 최근에 나온 spark 3.0.1은 scala 2.12에서 돌아간다. 따라서
spark, pyspark 2.4.7(scala 2.11) 로 맞춰주고 위 과정을 그대로 하면 돌아간다.
'Data Analysis and ML, DL > 스파크' 카테고리의 다른 글
[Pyspark] py4j.protocol.Py4JError (0) | 2020.11.18 |
---|---|
[Pyspark] Pyspark 데이터 전처리 기본기 (0) | 2020.11.18 |
[Pyspark] Pyspark 데이터 전처리 기본기 (0) | 2020.11.17 |
[Pyspark] Trouble Shooting (0) | 2020.11.17 |
[Pyspark] java gateway process exited before sending the driver its port number (0) | 2020.11.17 |