如何为dataframe_2中的每个值过滤dataframe_1中的所有行?

时间:2019-04-06 10:25:48

标签: apache-spark apache-spark-sql

我有两个Spark数据框:具有所有物料交易的dataframe_1和具有唯一物料ID的dataframe_2。我想为dataframe_2中的每个值过滤dataframe1中的所有行。

我正在尝试使用联接查询,但是不确定下面如何继续使用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()
  }
}

下面是show()命令的dataframe_1和dataframe_2输出 对于dataframe_2中的每个值,例如(101),我要求在存在101的位置过滤以下行

>|101|201| 301| 401|
>|101|201| 301|null|
>|101|201|null|null|
>|101|501|null|null|

类似地,对于dataframe_2中的所有值,我要求所有行都要过滤。 join命令可以吗?

>#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|

0 个答案:

没有答案