2016-06-14 22 views
1

で作業していない私は、URLのリストをファイルからRDDを作りました:私は「net.com」を含むすべての行と、この文字列を別のRDDを作るしようとしている今pysparkは正規表現

url_data = sc.textFile("url_list.txt") 

数字以外の文字や記号で始まります。私は、.net.comまたは\tのnet.comを含む行を含み、internet.comまたはcnet.comを除外することを意味します。

filtered_data = url_data.filter(lambda x: '[\W]net\.com' in x) 

しかし、この行は結果を与えません。 正規表現でpysparkシェルを動作させるにはどうすればよいですか?

+1

pythonでFalseを返す.net.com''「内の ' '[\ W]ネットを\ .COM' フィルタリングするには、それを渡します。だから、pythonの問題ではなく、pysparkの問題 – David

+0

正しい正規表現はどのような手がかりですか? – lacerated

+0

\。+ [a-zA-Z] + \。comは必要なregexコマンドのように見えます(ここでテストしてください:http://regexr.com/)。しかし、Pythonでシームレスに統合する必要はありません。これは、SQLクエリ(例:http://stackoverflow.com/questions/34952985/strip-or-regex-function-in-spark-13-3-dataframe)でこれを使用できるようです。 – David

答えて

0

reまたはre2(はるかに高速な)パッケージを使用する関数をPythonで定義し、一致するものがあればBoolを返します。

def url_filter(url): 
    pattern = re.compile(r'REGEX_PATTERN') 
    match = pattern.match(URL) 
    if match: 
     return True 
    else: 
     return False 

は、それからちょうど機能url_data.filter(lambda x: python_regex_fuction(x))