[java] 자바로 스파크의 스파크 MLlib 사용하기
Spark MLlib은 Spark에서 머신러닝 알고리즘을 사용할 수 있는 라이브러리입니다. 자바로 스파크 MLlib을 사용하는 방법에 대해 알아보겠습니다.
1. 스파크 MLlib 의존성 추가하기
먼저, Maven 또는 Gradle 프로젝트에서 스파크 MLlib의 의존성을 추가해야 합니다. 아래는 Maven을 사용하는 경우의 예시입니다.
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-mllib_2.12</artifactId>
<version>3.1.1</version>
</dependency>
</dependencies>
2. 스파크 컨텍스트 생성하기
SparkContext는 스파크의 기능을 사용하기 위해 필요한 핵심 객체입니다. 자바로 스파크 컨텍스트를 생성하는 방법은 다음과 같습니다.
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaSparkContext;
public class SparkMLExample {
public static void main(String[] args) {
// 스파크 설정 생성
SparkConf conf = new SparkConf()
.setAppName("Spark ML Example")
.setMaster("local[*]");
// 스파크 컨텍스트 생성
JavaSparkContext sc = new JavaSparkContext(conf);
// 여기에서부터 스파크 MLlib을 사용할 수 있습니다.
// 스파크 컨텍스트 종료
sc.stop();
}
}
setMaster("local[*]")
는 로컬 모드에서 스파크를 실행하고 모든 가능한 코어를 사용하도록 지정하는 코드입니다.
3. 스파크 MLlib 사용하기
스파크 MLlib을 사용하여 예제 머신러닝 알고리즘을 실행할 수 있습니다. 아래는 회귀(Regression) 예제를 실행하는 코드입니다.
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.mllib.regression.LabeledPoint;
import org.apache.spark.mllib.regression.LinearRegressionModel;
import org.apache.spark.mllib.regression.LinearRegressionWithSGD;
import org.apache.spark.mllib.util.MLUtils;
public class SparkMLExample {
public static void main(String[] args) {
// 스파크 컨텍스트 생성 및 설정
// 데이터 로드
String path = "data/regression.txt";
JavaRDD<LabeledPoint> data = MLUtils.loadLibSVMFile(sc.sc(), path).toJavaRDD();
// 데이터 분할
JavaRDD<LabeledPoint>[] splits = data.randomSplit(new double[]{0.7, 0.3});
JavaRDD<LabeledPoint> trainingData = splits[0];
JavaRDD<LabeledPoint> testData = splits[1];
// 선형 회귀 모델 훈련
int numIterations = 100;
LinearRegressionModel model = LinearRegressionWithSGD.train(trainingData.rdd(), numIterations);
// 테스트 데이터로 예측
JavaRDD<Tuple2<Double, Double>> predictionAndLabel = testData.map(
labeledPoint -> new Tuple2<>(model.predict(labeledPoint.features()), labeledPoint.label()));
// 예측 결과 확인
predictionAndLabel.take(10).forEach(System.out::println);
// 스파크 컨텍스트 종료
sc.stop();
}
}
위 코드는 회귀 분석을 위한 선형 회귀(Linear Regression) 모델을 사용하는 예제입니다. 데이터는 regression.txt
파일에서 로드되며, 학습 데이터와 테스트 데이터로 분할됩니다. 모델을 학습하고 테스트 데이터에서 예측을 수행한 후, 결과를 확인합니다.