Как написать 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
)
Пожалуйста, порекомендуйте.
Благодарю.