aug 02, 2019
admin
0
166

spark dataset 예제

DataFrame을 형식별 JVM 개체로 변환하는 데는 두 가지 이유가 있습니다. 먼저 명시적으로 변환한 후 Dataset API를 사용하는 모든 관계형 및 쿼리 식에 대해 컴파일 형식 안전성을 얻을 수 있습니다. 예를 들어 잘못된 데이터 형식을 사용하여 필터 작업을 사용하는 경우 Spark는 불일치 형식을 검색하고 컴파일 오류 대신 실행 런타임 오류를 실행하여 오류를 조기에 catch합니다. 둘째, Dataset API는 코드를 훨씬 쉽게 읽고 개발할 수 있는 고급 메서드를 제공합니다. 프로세스 및 데이터 집합을 시각화하는 섹션에서 Dataset 형식의 개체를 사용하면 코드를 더 쉽게 표현하고 읽을 수 있습니다. 이제 데이터 집합 추상화의 첫 번째 예제를 작성했습니다. 향후 게시물에서 데이터 집합 API에 대해 자세히 살펴보겠습니다. 스파크세션은 스파크SQL의 진입점입니다. 완전히 형식이 설정된 데이터 집합 데이터 추상화를 사용하여 Spark SQL 응용 프로그램을 개발하는 동안 만드는 첫 번째 개체입니다. SparkSession.Builder를 사용 하 여, 우리는 SparkSession의 인스턴스를 만들 수 있습니다.

그리고 중지 방법을 사용하여 SparkSession을 중지 할 수 있습니다 (spark.stop). 데이터 집합 정의는 데이터 프레임 API에 대해서도 이야기합니다. 데이터 프레임은 스키마에 대한 컴파일 검사가 없는 특수 데이터 집합입니다. 따라서 데이터세트가 이전 버전의 스파크에서 RDD를 대체하는 새로운 단일 추상화가 됩니다. DataFrames는 Spark에서 지원하는 모든 언어에서 일반 RDD를 능가하며 구조화 된 데이터 및 관계형 대수로 작업 할 때 편안한 API를 제공합니다. 그러나 형식에 관해서는 약한 지원을 제공합니다. 주로 두 가지 이유가 있습니다 : 우리는 RDD의 textFile API와 유사한 read.text API를 사용하여 데이터를 읽습니다. as[String] 코드 부분은 데이터 집합에 필요한 스키마를 할당합니다. 스파크 코어 내부에서 일어나는 일은 데이터프레임/데이터 집합이 최적화된 RDD로 변환된다는 것입니다. Spark는 코드를 분석하고 코드를 실행하는 가장 좋은 방법을 선택합니다.

예제에서는 데이터 집합 API만 사용하여 사용 가능한 모든 작업을 보여 줍니다. 실제로 집계를 수행하기 위해 DataFrame을 사용하는 것은 mapGroups를 사용하여 사용자 지정 집계를 수행하는 것보다 더 간단하고 빠릅니다. 다음 섹션에서는 데이터 집합을 DataFrames로 변환하고 집계작업을 수행하기 위해 DataFrames API를 사용하는 세부 정보를 다룹니다. 인코더는 Spark SQL의 직렬화 및 장직렬화(SerDes) 프레임워크의 기본 개념입니다. 인코더는 JVM 개체와 Spark의 내부 바이너리 형식 간에 변환됩니다. 스파크에는 매우 진보 된 내장 인코더가 있습니다. 그들은 오프 힙 데이터와 상호 작용 하는 바이트 코드를 생성 합니다. 인코더는 전체 개체를 직렬화하지 않고도 개별 특성에 대한 온디맨드 액세스를 제공합니다.

입력 출력 시간과 공간을 효율적으로 만들기 위해 Spark SQL은 SerDe 프레임워크를 사용합니다. 인코더는 레코드 스키마를 알고 있으므로 직렬화 및 역직렬화를 달성할 수 있습니다. 스파크 데이터 집합은 작업을 트리거하는 구조화및 지연 쿼리 식입니다. 내부적으로 데이터 집합은 논리 계획을 나타냅니다. 논리 계획은 데이터를 생성해야 하는 계산 쿼리를 알려줍니다.

POST CATEGORIES

Okategoriserade