2017-09-14 3 views
1

나는 불꽃 hiveContext을 이해하려고 애 쓰고있다. 우리가 점화 엔진 또는 하이브 엔진을 사용하고 hiveContext Spark HiveContext : Spark Engine 또는 Hive Engine?

sqlContext=new HiveContext(sc) 
sqlContext.sql("select * from TableA inner join TableB on (a=b) ") 

처럼 사용하여 쿼리를 작성하면? 위의 쿼리는 Spark Engine으로 실행됩니다. 그러나 우리가 데이터 프레임을 필요로하는 이유가 있다면?

모든 하이브 쿼리를 맹목적으로 sqlContext.sql("")에 복사하고 데이터 프레임을 사용하지 않고 실행할 수 있습니다.

DataFrames의 의미는 다음과 같습니다. TableA.join(TableB, a === b) SQL 명령을 사용하여 집계를 수행 할 수도 있습니다. 어느 누구나 개념을 분명히 해줄 수 있습니까? sqlContext.sql()이 아니라 데이터 프레임 조인을 사용하면 어떤 이점이 있습니까? 가입은 단지 하나의 예일뿐입니다. :)

+1

SQL은 쿼리 언어이며 쿼리 프로세서에서 컴파일해야합니다. Dataframe API는 (일종의) 쿼리 언어이며, 사람이 읽기/쓰기는 더 복잡하지만 쿼리 프로세서는 더 복잡합니다. –

+1

스칼라의 람다 식은 많은 상용구 변환과 컨트롤로 구현되기 때문에 일부 표현식은 SQL로 작성 될 때 좀 더 빨리 처리된다는 점에 유의하십시오 (cf. Spark Summit의 최근 프레젠테이션 참조). –

+1

또한 하이브 테이블에 쓰는 경우 SQL INSERT는 파일 형식이 Hive 구조를 엄격히 준수하는지 확인합니다. 항상 그렇지는 않습니다. –

답변

2

Spark HiveContext는 아래의 Spark 실행 엔진을 사용합니다 (spark code 참조).

스파크의 파서 지원은 플러그 가능하며, HiveContext는 스파크의 HiveQuery 파서를 사용합니다.

SQL을 사용하여 모든 작업을 수행 할 수 있으며 Dataframes는 필요하지 않습니다. 그러나 데이터 프레임은 동일한 결과를 얻는 편리한 방법을 제공했습니다. 사용자는 SQL 문을 작성할 필요가 없습니다.

+0

간단히 말해 "SQL"또는 "dataFrame"을 사용하고 사용자의 편의성을 고려하면 "기능적으로나 성능이 현명합니다"라고 말할 수 있습니까? "SQL"은 쿼리 파서를 통과해야하며 "데이터 프레임"은 필요하지 않습니까? –

+0

@rohan nayak 오른쪽 –

+0

설명해 주셔서 고맙습니다. –

관련 문제