伯爵&过滤火花

时间:2017-03-28 07:53:22

标签: apache-spark pyspark

在spark中,通常会在使用地图之前执行过滤操作,以确保地图可用。请参阅以下示例:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By


driver = webdriver.Chrome()
driver.maximize_window()


driver.get('http://booking.com')
driver.find_element_by_css_selector('#ss').send_keys("London")
WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR, ".search_hl_name")))
driver.find_elements(By.XPATH, "//*[@class ='search_hl_name']")[1].click() // you can use relative xpath in place of absolute one, replace index value at [1] with 0-4 which ever you want to select

如果您想知道过滤了多少用户,您如何有效地执行此操作?所以我不想使用:

bc_ids = sc.broadcast(ids)
new_ids = users.filter(lambda x: x.id in ids.value).map(lambda x: ids.value[x])

问题与1有关,但与此不同的是火花SQL。

1 个答案:

答案 0 :(得分:1)

  

在spark中,通常会在使用map之前执行过滤操作   确保地图是可能的。

在map()之前执行filter()的原因是只处理必要的数据。

回答你的问题

val base = sc.parallelize(Seq(1, 2, 3, 4, 5, 6, 7))    
println(base.filter { _.==(7) }.count())
println(base.filter { !_.==(7) }.count())

第一行将为您提供过滤结果,第二行将为您提供过滤的值。如果您正在处理缓存和分区数据,那么这可以有效地完成。