Я написал скрипт на Python, который читает csv и вставляет их в таблицу Cassandra, используя как асинхронный, так и параллельный режим, но параллельный медленнее асинхронного. Моя цель - использовать параллельные записи - добиться параллельной записи и, следовательно, ускорить задачу индексации файла csv в cassandra.
Код с использованием асинхронного:
for df in chunks:
futures = []
df = df.to_dict(orient='records')
chunk_counter += 1
for row in df:
key = str(row["0"])
row = json.dumps(row, default=str)
futures.append(
self.session.execute_async(
insert_sql, [key, "version_1", row]
)
)
# batch.add(insert_sql, (key, "version_1", row))
# self.session.execute(batch)
for future in futures:
self.log.debug(future)
continue
Код с использованием одновременных:
for df in chunks:
futures = []
df = df.to_dict(orient='records')
chunk_counter += 1
for row in df:
key = str(row["0"])
row = json.dumps(row, default=str)
params = (key, row, )
futures.append(
(
insert_sql,
params
)
)
results = execute_concurrent(
self.session, futures, raise_on_first_error=False)
for (success, result) in results:
if not success:
self.handle_error(result) # result will be an Exception