하이브/임팔라에 두 개의 테이블이 있습니다. 테이블에서 rdd로 스파크로 데이터를 가져오고 조인 작업을 수행하려고합니다.하이브 테이블의 데이터를 스파크로 가져 와서 RDD에서 조인을 수행합니다.
하이브 컨텍스트에서 조인 쿼리를 직접 전달하고 싶지 않습니다. 이것은 단지 예일뿐입니다. 표준 HiveQL로는 사용할 수없는 사례가 더 많습니다. 모든 행을 가져와 열에 액세스하고 변환을 수행하는 방법은 무엇입니까? 나는이 "ACCOUNT_ID"
가 이상적으로 나는 불꽃을 사용하여 rdds를 사용하여이 같은 것을하고 싶지라는 컬럼에 rdds에 가입 수행 할
val table1 = hiveContext.hql("select * from tem1")
val table2 = hiveContext.hql("select * from tem2")
:
은 가정하자 나는 두 rdds이 껍질.
select * from tem1 join tem2 on tem1.account_id=tem2.account_id;
안녕하세요, 고마워요.하지만 이미 이런 식으로하고 싶지 않다고 말씀 드렸습니다. 이것은 단지 간단한 예일뿐입니다. 더 복잡한 쿼리가있는 유스 케이스가 있습니다. 결과 세트에서 rdd를 생성하고 조인 및 기타 작업을 수행 할 수 있기를 원합니다. – user1189851
아, 미안합니다. user1189851, 원래 하이브 테이블에 대한 조인을 피하고 싶다고 생각했습니다. 위의 코드에서 내가 table1을 게시하고 table2는 SchemaRDD가 될 수 있습니다 (그리고 우리가 작성한 쿼리 중 어떤 것도 SchemaRDD를 돌려줍니다). table1과 table2는 무엇을 원했습니까? 스파크가 아닌 SQL 소스를 원하십니까? – Holden
그래서 첫 번째 rdd가 쿼리의 결과 집합 인 경우가 있습니다. 두 번째 쿼리는 다른 쿼리의 결과 집합입니다. val rdd1 = hiveContext.hql ("select * from table1") 및 val rdd2. = hiveContext.hql ("select * from table2"). account_id라는 공통 속성에서이 두 가지 rdd에 대해 조인을 수행하려고합니다. 아이디어는 하이브 컨텍스트 내부에서 조인을 원하지 않는다. 변형을 사용하여이를 수행 할 수 있어야한다. – user1189851