【发布时间】:2017-07-24 19:23:58
【问题描述】:
我的主要数据框如下所示:
data = spark.createDataFrame([
("name1", "type1", 2),
("name1", "type2", 1),
("name1", "type3", 4),
("name1", "type4", 5),
("name2", "type1", 6),
("name2", "type2", 7),
("name2", "type3", 8) \
],["name", "type", "cnt"])
data.printSchema()
是什么:
|name |type|cnt|
|------|-----------
|name1 |type1| 2|
|name1 |type2| 1|
|name1 |type3| 4|
|name1 |type4| 5|
|name2 |type1| 7|
|name2 |type2| 8|
| .... | ... | |
然后我想使用另外两个数据框来过滤主 DF:
df_name = spark.createDataFrame([
("name1"),
],["name"])
data.printSchema()
df_type = spark.createDataFrame([
("type1"),
("type3")
],["type"])
data.printSchema()
我想选择 df1 中所有在 df_name 中具有 name IN df_name 和 type 在 df_type 中的行。
类似于 SQL 中的 in 子句
SELECT * from df1
WHERE name in ('name1')
AND type IN ('type1', 'type3');
2 行的结果应该是什么:
|name |type|cnt|
|------|-----------
|name1 |type1| 2|
|name1 |type3| 4|
如何使用 spark 数据帧以有效的方式完成,性能是否比在 Hive 中更好?
谢谢
【问题讨论】:
标签: python apache-spark select dataframe