Как написать SortedSet типа данных Кассандра как JSON в Python?

Я пытаюсь сбросить данные Кассандры в формате CSV, используя Python. Пока что я разработал следующий скрипт:

from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
from cassandra.query import tuple_factory
from cassandra.query import dict_factory
import csv
auth_provider = PlainTextAuthProvider(username='cassandra', password='std123')
cluster = Cluster(['127.0.0.1'],auth_provider=auth_provider)
session = cluster.connect('killrvideo')

session.row_factory = tuple_factory
rows = session.execute("SELECT * FROM videos where videoid = 873ff430-9c23-4e60-be5f-278ea2bb21bd")
row = cursor.fetchall()
with open('data.csv', 'w') as fp:
    a = csv.writer(fp, delimiter=',')
    a.writerows(rows)     

cluster.shutdown()

И это дает мне вывод, как:

873ff430-9c23-4e60-be5f-278ea2bb21bd,
2013-05-16 23:50:00,
Second in a three part series for Cassandra Data Modeling,
http://www.youtube.com/watch?v=qphhxujn5Es,1,
"SortedSet([video_metadata(height=480, width=640, video_bit_rate=SortedSet([u'1000kbs', u'400kbs']), encoding=u'MP4')])",
Become a Super Modeler,
{u'YouTube': u'http://www.youtube.com/watch?v=qphhxujn5Es'},
"SortedSet([u'cassandra', u'cql', u'data model', u'instruction'])",
9761d3d7-7fbd-4269-9988-6cfd4e188678

Я добавил новую строку вручную, чтобы ее можно было легко прочитать здесь. Теперь фактический набор данных выглядит так:

 videoid            | 873ff430-9c23-4e60-be5f-278ea2bb21bd
 added_date         | 2013-05-16 23:50:00.000000+0000
 description        | Second in a three part series for Cassandra Data Modeling
 location           | http://www.youtube.com/watch?v=qphhxujn5Es
 location_type      | 1
 metadata           | {{height: 480, width: 640, video_bit_rate: {'1000kbs', '400kbs'}, encoding: 'MP4'}}
 name               | Become a Super Modeler
 preview_thumbnails | {'YouTube': 'http://www.youtube.com/watch?v=qphhxujn5Es'}
 tags               | {'cassandra', 'cql', 'data model', 'instruction'}
 userid             | 9761d3d7-7fbd-4269-9988-6cfd4e188678

Мой вопрос заключается в том, что в моем наборе результатов CSV был создан со значением, как

"SortedSet([u'cassandra', u'cql', u'data model', u'instruction'])"

Как я могу сделать это как простой формат JSON, чтобы я мог использовать этот CSV с помощью команды COPY для восстановления. Вот мое описание таблицы:

CREATE TABLE killrvideo.videos (
    videoid uuid PRIMARY KEY,
    added_date timestamp,
    description text,
    location text,
    location_type int,
    metadata set<frozen<video_metadata>>,
    name text,
    preview_thumbnails map<text, text>,
    tags set<text>,
    userid uuid
)

Пожалуйста, порекомендуйте.

Благодарю.

0 ответов

Другие вопросы по тегам