관계 스파크 세 개의 데이터 세트 (2 개)

데이터 세트는 분산 데이터 세트이지만,이 새로운 인터페이스는 단지 내부 버전 Spark1.6에서 추가되었다오고 새로운 인터페이스, 그래서 그들이 버전 1.6에 표시하기 전에주의 DataFrame을 지불하는 것은 밖으로 처음이다 그것의 이점을 제공하는 데이터 집합? 이러한 또한 강력한 타이핑, 람다 표현식에 대한 지원, 그리고, 그것은이 가능한 대부분의 일들이 내 사용할 수있는 몇 가지 최적화 sparksql 실행 엔진, DataFrame 데이터 집합은 어떤 방법으로 데이터 집합을 구축 제공? JVM은 대상이며, 등등지도 flatMap 필터와 같은 일부 함수식. 데이터 집합은 데이터 집합 API를 지원하지 않습니다 아직 자바와 스칼라 언어, 주의력 파이썬 내부에서 사용할 수 있습니다.

유형에 관하여 1 :

데이터 집합 타입 (입력)으로, 예 : 데이터 집합 <PerSono> . 유사한 person.getName ()이 API를 사용하여, 각 데이터의 값을 취득 할 때 보안 유형을 보장 할 수 있습니다. 
DataFrame는 거래를하기 위해 열 이름에 따라, 형식화되지 않은, 그래서는 데이터 집합 <행>로 정의합니다. 각 데이터의 값을 취득 할 때의 값으로 특정 데이터 유형을 알 수 없다, 얻을 수있는 방법으로 row.getString (0) 또는 COL ( "부서")를 사용할 수 있습니다.

 

 

// 텍스트 파일을로드하고 java.lang.String의 각 라인을 해석 
. 발 ds는 = sqlContext.read.text ( "/ 홈 / 스파크 / 1.6 / 라인")와 같은 [문자열]

 

// dataframe의 
발 결과 =의 DS 
  .flatMap (_. 분할 ( ""))                // 공백에 분할 
  ( ".filter _! =)"                      // 빈 단어 필터 
  .toDF을 ()                               // 수행 할 DataFrame로 변환 집계 / 정렬 
  .groupBy ($ "값")                    // 각 단어의 발행 수의 수를 카운트 
  ( "numOccurances"로 계산 ( "*") .agg를 ) 
  .orderBy ($ "numOccurances"내림차순)       // 첫 공연 가장 일반적인 단어

 

// 데이터 집합, 스칼라 프로그램의 전체를 사용, DataFrame로 전환되지 않는 
 
발 단어 수 =  
  (_. 분할 (ds.flatMap "" )) 
    .filter (_ ! = "" ) 
    .GroupBy (_합니다.와 toLowerCase ()) // 대신 컬럼 식 그룹화 (IE $ '값')를 우리는 람다 함수 패스 
    (.count)를

DataFrame 데이터 세트와는 서로 변환 될 수 df.as[ElementType]DataFrame 데이터 세트로 변환 될 수있는 ds.toDF()데이터 세트 DataFrame로 전환시킬 수있다.

스키마 2. :

스키마,없이 데이터 집합 스키마 DataFrame. 스키마는 데이터의 각 행에 대해 "데이터 구조"를 정의하는 관계형 데이터베이스, "행"처럼 DataFrame 스키마는 얼마나 많은 열을 지정합니다.

3. 데이터 유형 검사

데이터 세트는 특별한 경우의 DataFrame 고려 될 수 있으며, 가장 큰 차이점은 모든 레코드에 저장된 데이터 세트가 컴파일시에 확인할 수 있습니다 대신 행, 데이터 집합 형식의 강력한 형식의 값입니다이다.

4. 새로운 개념의 인코더

데이터 세트 DataFrame 및 RDD의 장점을 결합하고, 새로운 개념을 가져온다 인코더 
데이터의 순서가 영향을 상호 오프 힙 바이트 인코더 직렬화없이 데이터 주문형 액세스를 달성 할 수 생성 전체 객체입니다. 스파크는 사용자 정의 인코더의 API를 제공하지 않은,하지만 미래는 추가됩니다.

 

추천

출처www.cnblogs.com/wqbin/p/11741596.html