У меня есть два искровых фрейма данных: dataframe_1 со всеми транзакциями элементов и dataframe_2 с уникальными идентификаторами элементов. Я хочу отфильтровать все строки из dataframe1 для каждого значения в dataframe_2.
Я пытаюсь использовать запрос на соединение, но не знаю, как действовать ниже, это основная программа, написанная на scala:
def main(args: Array[String]) {
Logger.getLogger("org").setLevel(Level.ERROR)
val ss = SparkSession
.builder
.appName("Self_apriori_1").master("local[*]")
.getOrCreate()
import ss.implicits._
val df_1 = ss.read.option("inferSchema", value=true).csv("/home/balakumar/scala work files/matrimony_3.csv")
df_1.show()
df_1.printSchema()
val df_2 = ss.read.option("inferSchema" ,value=true) csv("/home/balakumar/scala work files/unique_1.txt")
df_2.show(false)
df_2.printSchema()
}
}
Ниже приведены выходные данные dataframe_1 и dataframe_2 для команды show ()
для каждого значения в dataframe_2, скажем (101), я требую, чтобы следующие строки были отфильтрованы там, где присутствует 101
>|101|201| 301| 401|
>|101|201| 301|null|
>|101|201|null|null|
>|101|501|null|null|
Аналогично для всех значений в dataframe_2 мне требуется отфильтровать все строки. Возможно ли это с помощью команды соединения?
>#dataframe_1
>+---+---+----+----+
> _c0|_c1| _c2| _c3
>+---+---+----+----+
>|101|201| 301| 401|
>|101|201| 301|null|
>|101|201|null|null|
>|101|501|null|null|
>|601|201| 301|null|
>|601|201|null|null|
>|601|501|null|null|
>+---+---+----+----+
>root
> |-- _c0: integer (nullable = true)
> |-- _c1: integer (nullable = true)
> |-- _c2: integer (nullable = true)
> |-- _c3: integer (nullable = true)
>#dataframe_2
>+---+
>|_c0|
>+---+
>|101|
>|201|
>|301|
>|401|
>|501|
>|601|