Spark가 Scala와 완전히 통합되어 있음을 알고 있습니다. 유스 케이스는 특히 대규모 데이터 세트를위한 것입니다. 스칼라를 잘 지원하는 다른 도구는 무엇입니까? Scala는 대규모 데이터 세트에 가장 적합합니까? 아니면 더 작은 데이터 세트에도 적합합니까?
Spark가 Scala와 완전히 통합되어 있음을 알고 있습니다. 유스 케이스는 특히 대규모 데이터 세트를위한 것입니다. 스칼라를 잘 지원하는 다른 도구는 무엇입니까? Scala는 대규모 데이터 세트에 가장 적합합니까? 아니면 더 작은 데이터 세트에도 적합합니까?
답변:
스칼라는 소규모 및 대규모 데이터 모두에서 작동하지만 확장 가능한 무언가가 필요하여 생성 및 개발에 동기를 부여합니다. Scala는“Scalable Language”의 약어입니다 .
스칼라는 jvm에서 실행 되는 기능적 프로그래밍 언어 입니다 . 이것의 '기능적'부분은 프로그래밍에 대해 다르게 생각하게 만드는 언어의 근본적인 차이입니다. 그런 사고 방식이 마음에 들면 작은 데이터로 빠르게 작업 할 수 있습니다. 당신이 그것을 좋아하든 아니든, 기능적 언어는 기본적으로 대규모 확장이 더 쉽습니다. jvm은 기본적으로 어디에나 있으므로 스칼라 코드는 기본적으로 모든 곳에서 실행될 수 있기 때문에 jvm 조각도 중요합니다. ( jvm에 작성된 다른 언어 와 기타 기능 프로그래밍 언어가 많으며 Scala 이외의 언어가 두 목록에 모두 표시됩니다.)
이 이야기 는 스칼라의 동기에 대한 좋은 개요를 제공합니다.
앞에서 언급했듯이 Spark (반복적 인 알고리즘보다 반복적 인 알고리즘에서 더 나은 분산 처리)가 큰 문제입니다. Spark에는 기계 학습을위한 라이브러리 Mllib 와 그래프를위한 GraphX 가 있습니다. Erik Allik과 Tris Nefzger가 언급했듯이 Akka 와 Factorie 가 있습니다. 또한이 재생 .
일반적으로 특정 유스 케이스를 파고 있는지 (그렇다면 질문의 일부로 삼으십시오) 빅 데이터 도구에 대한 설문 조사를 원하고 스칼라를 조금 알고 싶어합니다. 거기서부터 시작합니다.
ScalaNLP는 일반적인 자연 언어 처리 작업을 지원하는 기계 학습 및 수치 컴퓨팅 라이브러리 제품군입니다. http://www.scalanlp.org/
다음은 데이터 과학을 위해 새로 업데이트 된 스칼라 라이브러리 목록입니다. https://www.datasciencecentral.com/profiles/blogs/top-15-scala-libraries-for-data-science-in-2018-1
Scala의 창시자 인 Martin Odersky의 프리젠 테이션을 듣는 것에서부터 객체 지향 및 유연한 구문과 함께 기능적 프로그래밍 구조를 활용하여 확장 성이 뛰어난 시스템을 구축하는 데 특히 적합합니다. 또한 작은 언어의 개발 및 빠른 프로토 타이핑에도 유용합니다. 다른 언어보다 코드 줄이 적고 빠른 피드백을위한 대화식 모드가 있기 때문입니다. 주목할만한 스칼라 프레임 워크 중 하나는 Akka로, 동시 계산의 액터 모델을 사용합니다. Odersky의 많은 프레젠테이션은 YouTube에 있으며 wiki.scala-lang.org에 Scala로 구현 된 도구 목록이 있습니다.
암시적인 요점은 Scala로 작성된 도구와 프레임 워크는 본질적으로 Scala 통합과 일반적으로 Scala API를 가지고 있다는 것입니다. 그런 다음 Scala가 이미 통합되어 있으며 실제로 Java에 크게 의존하기 때문에 Java로 시작하는 다른 언어를 지원하기 위해 다른 API를 추가 할 수 있습니다. 도구 또는 프레임 워크가 Scala로 작성되지 않은 경우 Scala를 지원하지 않을 것입니다. 이것이 귀하의 질문에 대한 답변으로 Scala and Spark로 작성된 도구와 프레임 워크를 지적한 이유 중 하나입니다. 그러나 스칼라는 현재 시장 점유율이 미미하지만 채택률이 높아지고 있으며 Spark의 높은 성장률로 인해 시장이 향상 될 것입니다. Scala를 사용하는 이유는 Spark의 Scala API가 Java 및 Python API보다 풍부하기 때문입니다.
내가 스칼라를 선호하는 주된 이유는 객체 지향 모듈성을 유지하면서 객체와 값으로 함수를 사용할 수 있도록 허용하기 때문에 Java보다 훨씬 표현력이 뛰어 나기 때문입니다. 광범위한 사용, 명확성 및 우수한 문서화로 인해 선호했습니다.