Spark SQL - 如何根据查找表过滤行

时间:2018-01-04 00:36:12

标签: sql apache-spark pyspark hiveql

我的第一个表有数百万行,有多列,例如:

ID   Name   Dept   City   State
11   sam    sales  Boston MA
22   Bob    market Atlanta GA
25   Mike   IT     SF     CA

和第二个查找表包含两行,包含Number和States,示例如下,

No State
1  CA
2  TX

如何从第一张表中获得结果,不包括表2中有状态值的行?
Spark不支持子查询,如何在spark中完成?

3 个答案:

答案 0 :(得分:1)

SELECT * FROM table1
WHERE state NOT IN (SELECT state FROM table2 )

答案 1 :(得分:1)

这是通用SQL,您可以将其调整到您的特定数据库。

另外,如果您有数百万条记录,请确保您要过滤的字段上有索引。

请告诉我这是否有帮助。

select * from firsttable
where State not in (select distinct state from secondtable)

答案 2 :(得分:0)

试试这个:

 SELECT *
  FROM   Table1
   LEFT JOIN Table2     
   ON     (Table1.state =      Table2.state)
   WHERE  Table2.state        IS NULL