Spark 2.2.0 릴리즈 업데이트 정리

7월 11일 약 2개월 만에 Spark 2.2.0이 릴리즈 되었습니다. 어떤 변경 사항들이 있었는지 릴리즈 노트를 통해 간략하게 정리해보았습니다.

pypi 를 통한 PySpark 설치

드디어 PySpark이 pip을 지원하게 되었습니다. pip install pyspark 명령어를 통해 쉽게 설치 가능합니다. 설치된 버전은 Spark 2.2.0 버전 입니다.

numpy, pandas 파이썬 패키지에 dependency가 있으며, 자세한 사항은 pypi 패키지 링크를 통해 확인하실 수 있습니다. 이번 업데이트를 통해 standalone cluster에서 누구나 쉽게 사용해 볼 수 있을 듯 합니다.

Structured Streaming

이번 버전부터 Structured Streaming이 새로 추가 되었습니다. Structured Streaming은 스트리밍 어플리케이션을 더 빠르고 쉽게 개발하기 위해 만들어진 패키지입니다.

Spark Streaming이 내부적으로 RDD API를 지원하는 반면, Structured Streaming은 DataFrame, Dataset API를 지원합니다. 언어는 Scala, Java, Python 모두 지원하며, readStream 이라는 메서드를 통해 다양한 저장소로부터 데이터를 읽을 수 있습니다. 특히 이번 업데이트를 통해 Apache Kafka 스트리밍 지원이 추가되었습니다.

# Subscribe to 1 topic
df = spark \
  .readStream \
  .format("kafka") \
  .option("kafka.bootstrap.servers", "host1:port1,host2:port2") \
  .option("subscribe", "topic1") \
  .load()
df.selectExpr("CAST(key AS STRING)", "CAST(value AS STRING)")

Structured Streaming에 대한 자세한 내용은 http://spark.apache.org/docs/2.2.0/structured-streaming-programming-guide.html 에서 확인하실 수 있습니다.

MLlib

예상했던 대로 MLlib에도 많은 변화가 생겼습니다. RDD-based MLlib이 아니라 DataFrame-based MLlib을 확인하시면 됩니다.

  • 기존에 scala API만 지원하던 모델들에 python, R API가 추가되었습니다.
  • 지원이 추가된 모델은 Gradient Boosted Trees, Bisecting K-Means, LSH, Distributed PCA, SVD 입니다.
  • DataFreame-based MLlib에 새로운 모델이 추가되었습니다.
  • 추가된 모델은 LinearSVC (Linear SVM Classifier), ChiSquare test, Correlation, Imputer feature transformer, Tweedie distribution, FPGrowth frequent pattern mining, AssociationRules 입니다.

SparkR

이번 업데이트를 통해 SparkR에서 Spark SQL API가 확대되었습니다.

  • R API에 Structured Streaming, Catalog가 추가되었습니다.
  • to_json, from_json 메서드가 추가되었습니다.
  • Coalesce, DataFrame checkpointing, Multi-column approxQuantile 기능이 추가되었습니다.

GraphX

GraphX는 버그 수정, 최적화 업데이트가 추가되었습니다. 이번 Structured Steaming이 메인에 추가된 것으로 보아, 추후에 DataFrame, DataSet API 기반의 GraphFrame이 추가될 수도 있다고 예상합니다.

  • PageRank, vertexRDD/EdgeRDD checkpoint 버그를 수정했습니다.
  • PageRank, Pregel API가 개선되었습니다.

Core and SparkSQL, Deprecations

마지막으로 Core, SparkSQL 그리고 Deprecation 업데이트 입니다. 전체 업데이트 및 기타 자세한 내용은 맨 아래의 링크를 참고하시면 됩니다.

  • Python 2.6, Java 7, Hadoop 2.5 지원이 종료되었습니다.
  • ALTER TABLE table_name ADD COLUMNS 구문이 추가되었습니다.
  • Cost-Based Optimizer 성능이 개선되었습니다.
  • CSV, JSON 포멧의 File listing/IO 성능이 개선되었습니다.

Reference