저는 DataFrames
을 Spark 2.2.0
과 Scala 2.11.8
에 있습니다. 내가 df1
에서 rank
을 찾으려면, df2
에Spark 2에서 struct를 검색하는 방법은 무엇입니까?
df2 =
+----------+-------------+
|itemA | itemB |
+----------+-------------+
| 111 | 333 |
| 222 | 444 |
| 333 | 555 |
| 444 | 777 |
+----------+-------------+
각 쌍의 경우 :
|-- item: string (nullable = true)
|-- other_items: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- item: string (nullable = true)
| | |-- rank: double (nullable = true)
그리고 :
df1 =
+----------+-------------------------------+
|item | other_items |
+----------+-------------------------------+
| 111 |[[444,1.0],[333,0.5],[666,0.4]]|
| 222 |[[444,1.0],[333,0.5]] |
| 333 |[] |
| 444 |[[111,2.0],[555,0.5],[777,0.2]]|
+----------+-------------------------------+
printScheme
는 다음과 같은 출력을 제공합니다. 이렇게하려면 df1
에서 같은 쌍을 찾아서 df1.item
이 df2.itemA
이고 other_items.struct.[item]
이 df2.itemB
과 같아야합니다. 같은 쌍을 찾을 수없는 경우, 순위는 0
이 결과는이 일해야해야한다 :
+----------+-------------+-------------+
|itemA | itemB | rank |
+----------+-------------+-------------+
| 111 | 333 | 0.5 |
| 222 | 444 | 1.0 |
| 333 | 555 | 0.0 |
| 444 | 777 | 0.2 |
+----------+-------------+-------------+
내가 어떻게 할 수 있습니까?
안녕하세요. 질문에 무슨 문제가 있습니까? – Markus