我认为最终的解决方案可能是将OrderedMapSerializedKey
Cassandra结构作为dict
存储在您的数据框列中,然后您可以将此值/列转移给您想要的任何人。最终,因为你可能不知道Cassandra行中的实际键(也许不同的键被插入到行中)。
所以在这里我测试过的解决方案,你只需要提高pandas_factory
功能可按:
编辑:
在以前的解决方案,我更换的只有第一个(0)级行卡桑德拉数据集(rows
是元组的列表,每个元组是在卡桑德拉行)
from cassandra.util import OrderedMapSerializedKey
def pandas_factory(colnames, rows):
# Convert tuple items of 'rows' into list (elements of tuples cannot be replaced)
rows = [list(i) for i in rows]
# Convert only 'OrderedMapSerializedKey' type list elements into dict
for idx_row, i_row in enumerate(rows):
for idx_value, i_value in enumerate(i_row):
if type(i_value) is OrderedMapSerializedKey:
rows[idx_row][idx_value] = dict(rows[idx_row][idx_value])
return pd.DataFrame(rows, columns=colnames)
您必须插入一些自动检查Cassandra映射字段之前/之后是否有最小值的一个值,或者相应地手动修改上面的脚本。
美好的一天!
这与我所做的相同。 –