Class ProdsTransformer:
def __init__(self):
self.products_lookup_hmap = {}
self.broadcast_products_lookup_map = None
def create_broadcast_variables(self):
self.broadcast_products_lookup_map = sc.broadcast(self.products_lookup_hmap)
def create_lookup_maps(self):
// The code here builds the hashmap that maps Prod_ID to another space.
pt = ProdsTransformer()
pt.create_broadcast_variables()
pairs = distinct_users_projected.map(lambda x: (x.user_id,
pt.broadcast_products_lookup_map.value[x.Prod_ID]))
ottengo il seguente errore:Spark: variabili Broadcast: Sembra che si sta tentando di fare riferimento SparkContext da una variabile di trasmissione, azione o transforamtion
"Exception: It appears that you are attempting to reference SparkContext from a broadcast variable, action, or transforamtion. SparkContext can only be used on the driver, not in code that it run on workers. For more information, see SPARK-5063."
Qualsiasi aiuto con il modo di affrontare il le variabili trasmesse saranno fantastiche!
Questo codice non è sufficiente e/o dati di esempio per consentire a qualcuno di provare a duplicare l'errore e/o correggerlo. Inoltre, nel caso non l'avessi notato, tutti i rientri vengono rimossi dal pitone. – Paul
Ho aggiunto altro codice. – user3803714
Mi chiedo se l'errore scompaia se spostate il file 'products_lookup_map' dalle proprietà delle istanze di' ProdsTransformer' e invece lo rendete globale. Hai bisogno di più di una mappa? – Paul