2016-08-11 3 views
1

데이터 프레임 (df1)에는 50 개의 열이 있고 첫 번째 열은 cust_id이고 나머지는 피쳐입니다. 또한 cust_id 만 포함하는 다른 데이터 프레임 (df2)이 있습니다. df1에 df1에 고객 당 레코드 하나를 추가하고 싶습니다.하지만 두 개의 데이터 프레임에는 두 개의 다른 스키마가 있으므로 통합을 할 수 없습니다. 그렇게하는 가장 좋은 방법은 무엇입니까?spark에서 데이터 프레임에 레코드를 삽입하는 방법

전체 외부 조인을 사용하지만 두 개의 cust_id 열을 생성하며 하나가 필요합니다. 어떻게 든이 두 cust_id 열을 병합해야하지만 어떻게해야할지 모르겠다.

+1

으음, 시도해 보셨습니까? – gsamaras

+0

아무것도 내 마음에 온다! –

+0

어쩌면 전체 외부 조인이 도움이 될까요? –

답변

2

당신은 완전 외부를 수행하여 그런 일을 달성하기 위해 시도 할 수는 다음과 같이 조인

val result = df1.join(df2, Seq("cust_id"), "full_outer") 

그러나, 기능은 정말 제로로 필요할 경우 null 대신 0이 될거야 한 가지 방법은 다음과 같습니다.

val features = df1.columns.toSet - "cust_id" // Remove "cust_id" column 
val newDF = features.foldLeft(df2)(
    (df, colName) => df.withColumn(colName, lit(0)) 
) 
df1.unionAll(newDF) 
관련 문제