Я пытаюсь использовать аккумулятор (переменную) внутри кроме / else:
Обновленный код
classifier = UtteranceClassifier()
sc = SparkContext("local[2]")
offensives = sc.accumulator(0)
total = sc.accumulator(0)
# Create Spark session
def get_spark_session():
return SparkSession \
.builder \
.master(master) \
.appName(appName) \
.getOrCreate()
def classify(utterance):
global offensives
global total
total += 1
print("total: ", total)
try:
return classifier.classify(utterance)
except Exception:
offensives += 1
print("offensives: ", offensives)
def main():
spark: SparkSession = get_spark_session()
....
# Clean text
df_clean = df.select((f.lower(f.regexp_replace('utterance', "[^a-zA-Z\\s]", "")).alias('utterance_text')))
# Tokenize text
tokenizer = Tokenizer(inputCol='utterance_text', outputCol='utterance_token')
df_words_token = tokenizer.transform(df_clean).select('utterance_token')
# Remove stop words
remover = StopWordsRemover(inputCol='utterance_token', outputCol='utterance_clean')
df_no_stopwords = remover.transform(df_words_token).select('utterance_clean')
#df_no_stopwords.show(truncate=False)
classify_udf = f.udf(classify, StringType())
# Classify utterance
df_no_stopwords = df_no_stopwords.withColumn("offensive", classify_udf(f.col('utterance_clean')))
df_no_stopwords.show(truncate=False)
print("Offensives: ", offensives.value)
print("Total: ", total.value)
У меня такая ошибка компиляции как для переменных общего значения, так и для атак:
Информация о проверке: эта проверка обнаруживает имена, которые должны быть разрешены, но не ...