Невозможно удалить пустые строки из списков токенов, используя RDD.map и лямбду - PullRequest
0 голосов
/ 03 марта 2020

Невозможно удалить пустые строки из списков токенов, используя RDD.map и лямбду, и я также не могу удалить пустые списки токенов, используя RDD.filter и лямбду.

def prepareTokenRDD(fn_txt_RDD):
    rdd_vals2 = fn_txt_RDD.values() # It's convenient to process only the values. 
    rdd_vals3 = rdd_vals2.map(tokenize) # Create a tokenised version of the values by mapping
    rdd_vals4 = rdd_vals3.map(removePunctuation) # remove punctuation from the values
    rdd_kv = fn_txt_RDD.keys().zip(rdd_vals4) # we zip the two RDDs together 
    # i.e. produce tuples with one item from each RDD.
    # This works because we have only applied mappings to the values, 
    # therefore the items in both RDDs are still aligned.
    # >>> now remove any empty strings (i.e. length 0) that we may have 
    # created by removing punctuation, and resulting entries without words left.
    rdd_kvr = rdd_kv.map(lambda x: (x[0],[s for s in x[1] if len(s)>0])) # can't seem to remove empty strings from token lists using RDD.map and a lambda. #<<<<<
    rdd_kvrf = rdd_kvr.filter(lambda x: len(x[0])>0) # can't remove empty token lists using RDD.filter and a lambda. #<<<<<<
    return rdd_kvrf 
...