는
dfMain
+----+----+----+
|col1|col2|col3|
+----+----+----+
|a1 |b1 |c1 |
|a |b2 |c3 |
|a |b3 |c4 |
+----+----+----+
및
df
+----+----+----+
|col1|col2|col3|
+----+----+----+
|a |b1 |c1 |
|a |b2 |c2 |
|a |b3 |c3 |
+----+----+----+
지금 문제의 코드를 찾고 두
dataframes
로이 말을하자, 당신은하지 않습니다
dfMain
그
col1
에서
filter in
rows
하려고하는
df col1
이고 나머지 두 열은 동일합니다. 즉
.filter($"col1" !== r.col1 && $"col2" === r.col2 && $"col3" === r.col3)
입니다. 경우 먹으 렴 경우에 당신은 당신이 단지
dfMain
의
columns
, 당신은
dfMain.as("main").join(df.as("table"), $"main.col1" =!= $"table.col1" && $"main.col2" === $"table.col2" && $"main.col3" === $"table.col3", "inner")
.select($"main.col1", $"main.col2",$"main.col3")
을해야 할 것인지하는 당신에게 지금
+----+----+----+----+----+----+
|col1|col2|col3|col1|col2|col3|
+----+----+----+----+----+----+
|a1 |b1 |c1 |a |b1 |c1 |
+----+----+----+----+----+----+
을 제공한다 join
dfMain.as("main").join(df.as("table"), $"main.col1" =!= $"table.col1" && $"main.col2" === $"table.col2" && $"main.col3" === $"table.col3", "inner")
로 이동해야하는해야 be
+----+----+----+
|col1|col2|col3|
+----+----+----+
|a1 |b1 |c1 |
+----+----+----+
그리고 당신은 단지 df
의 columns
하려는 경우, 당신은
+----+----+----+
|col1|col2|col3|
+----+----+----+
|a |b1 |c1 |
+----+----+----+
로 dataframe을 생성해야 아니면 모두 dataframe
joined
의 혼합 출력을 할 수 있습니다
dfMain.as("main").join(df.as("table"), $"main.col1" =!= $"table.col1" && $"main.col2" === $"table.col2" && $"main.col3" === $"table.col3", "inner")
.select($"table.col1", $"table.col2",$"table.col3")
을 수행해야합니다.
col1이 df col1과 같지 않고 나머지 2 개의 열이 같은 dfMain 행을 필터링하고 싶습니까? –
안녕하세요, Ramesh 님, 감사합니다. 기본적으로,지도에서'dfMain'에서 요소를 선택하는 기준을 가지고 있습니다. 'df'의 각 행에 대해 이러한 기준을 사용하여'dfMain'의 일부 요소를 선택해야합니다 (필자는 이러한 질문 중 하나를 썼습니다). 'map'의 기준이 점점 복잡해질 수 있기 때문에,'df'의 각 행 (map에 의해 생성 된 DataFrames)의'map' 결과를 함께 병합 할 수있는 솔루션을 고맙게 생각합니다. 생성 된 DataFrames를 병합하는 솔루션이 있습니까? –
내 솔루션이 도움이되지 않았습니까? 다른 데이터 프레임의 맵 안에는 데이터 프레임을 사용할 수 없습니다. 유일한 해결책은 그들과 합류하는 것입니다. 두 개의 데이터 프레임을 병합하는 데 유니언을 사용할 수 있습니다. –