Я работаю над обработкой данных с использованием искры и кассандры.
Я хочу сначала прочитать и загрузить данные с Кассандры. Обработайте данные и запишите их обратно в cassandra.
Когда spark выполняет функцию карты, возникает ошибка - Row is read-only <class 'Exception'>
Вот мой метод. Ниже показано
def detect_image(image_attribute):
image_id = image_attribute['image_id']
image_url = image_attribute['image_url']
if image_attribute['status'] is None:
image_attribute['status'] = Status()
image_attribute['status']['detect_count'] += 1
... # the other item assignment
cassandra_data = sql_context.read.format("org.apache.spark.sql.cassandra").options(table="photo",
keyspace="data").load()
cassandra_data_processed = cassandra_data.rdd.map(process_batch_image)
cassandra_data_processed.toDF().write \
.format("org.apache.spark.sql.cassandra") \
.mode('overwrite') \
.options(table="photo", keyspace="data") \
.save()
Ошибка Row is read-only <class 'Exception'>
в строке image_attribute['status'] = Status()
и image_attribute['status']['detect_count'] += 1
: необходимо ли скопировать image_attribute
, чтобы бытьновый объект? Тем не менее, image_attribute является вложенными объектами. Будет так сложно скопировать один за другим слой.