오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Data Analysis and ML, DL/스파크

[Pyspark] Colab No module Named 'mmlspark.lightgbm._LightGBMRegressor'

junha6316 2020. 11. 18. 10:39

 

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) 로 맞춰주고 위 과정을 그대로 하면 돌아간다.