나는 불꽃 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()
이 아니라 데이터 프레임 조인을 사용하면 어떤 이점이 있습니까? 가입은 단지 하나의 예일뿐입니다. :)
SQL은 쿼리 언어이며 쿼리 프로세서에서 컴파일해야합니다. Dataframe API는 (일종의) 쿼리 언어이며, 사람이 읽기/쓰기는 더 복잡하지만 쿼리 프로세서는 더 복잡합니다. –
스칼라의 람다 식은 많은 상용구 변환과 컨트롤로 구현되기 때문에 일부 표현식은 SQL로 작성 될 때 좀 더 빨리 처리된다는 점에 유의하십시오 (cf. Spark Summit의 최근 프레젠테이션 참조). –
또한 하이브 테이블에 쓰는 경우 SQL INSERT는 파일 형식이 Hive 구조를 엄격히 준수하는지 확인합니다. 항상 그렇지는 않습니다. –