Ошибка с Cassandra's create_keyspace_simple
Я пытаюсь использовать Кассандру для соединения с Meetup потокового API через Кафку. cqlengine
Похоже, что раньше это был отдельный проект, и ссылочный код, который я использую, создан примерно в то же время.
Так что раньше, cqlengine.management
имел create_keyspace
Сейчас, cassandra.cqlengine.management
имеет create_keyspace_simple
Я пытаюсь создать пространство ключей.
create_keyspace_simple('meetup', 'SimpleStrategy', 1)
Однако тогда я получил эту ошибку. Предупреждение:
/Users/a/anaconda/lib/python2.7/site-packages/cassandra/cqlengine/management.py:419: UserWarning: CQLENG_ALLOW_SCHEMA_MANAGEMENT переменная среды не задана. В будущих версиях этого пакета эта переменная потребуется для включения функций управления.
warnings.warn (MSG)
Ошибка:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-17-45553511338c> in <module>()
1 # create keyspace
2 # keyspace name, keyspace replication strategy, replication factor
----> 3 create_keyspace_simple('meetup', 'SimpleStrategy', 1)
/Users/a/anaconda/lib/python2.7/site-packages/cassandra/cqlengine/management.pyc in create_keyspace_simple(name, replication_factor, durable_writes)
54 """
55 _create_keyspace(name, durable_writes, 'SimpleStrategy',
---> 56 {'replication_factor': replication_factor})
57
58
/Users/a/anaconda/lib/python2.7/site-packages/cassandra/cqlengine/management.pyc in _create_keyspace(name, durable_writes, strategy_class, strategy_options)
84 log.info("Creating keyspace %s ", name)
85 ks_meta = metadata.KeyspaceMetadata(name, durable_writes, strategy_class, strategy_options)
---> 86 execute(ks_meta.as_cql_query())
87 else:
88 log.info("Not creating keyspace %s because it already exists", name)
/Users/a/anaconda/lib/python2.7/site-packages/cassandra/metadata.so in cassandra.metadata.KeyspaceMetadata.as_cql_query (cassandra/metadata.c:17371)()
AttributeError: 'NoneType' object has no attribute 'export_for_schema'
1 ответ
Судя по документации, create_keyspace_simple
принимает следующий список параметров:
create_keyspace_simple(name, replication_factor, durable_writes=True)
- name (str) - имя пространства ключей для создания
- replication_factor (int) - коэффициент репликации пространства ключей, используемый с SimpleStrategy
- durable_writes (bool) - запись журнала игнорируется, если задано значение False
Исходя из этого, я думаю, что ваш оператор будет работать, если вы удалите параметр SimpleStrategy. Так как вы используете create_keyspace_simple
подразумевается SimpleStrategy, поэтому вам не нужно указывать его в любом случае.
create_keyspace_simple('meetup', 1)