如何将Cassandra数据快速地读入pandas?我目前使用以下代码,但速度非常慢...
import pandas as pd
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
from cassandra.query import dict_factory
auth_provider = PlainTextAuthProvider(username=CASSANDRA_USER, password=CASSANDRA_PASS)
cluster = Cluster(contact_points=[CASSANDRA_HOST], port=CASSANDRA_PORT,
auth_provider=auth_provider)
session = cluster.connect(CASSANDRA_DB)
session.row_factory = dict_factory
sql_query = "SELECT * FROM {}.{};".format(CASSANDRA_DB, CASSANDRA_TABLE)
df = pd.DataFrame()
for row in session.execute(sql_query):
df = df.append(pd.DataFrame(row, index=[0]))
df = df.reset_index(drop=True).fillna(pd.np.nan)
读取1000行需要1分钟时间,我还有“更多”要读取…如果我在DBeaver中运行相同的查询,我可以在一分钟内获得全部结果(约40k行)。
谢谢!!!
session.execute(sql_query)
的结果是一个特殊的<cassandra.cluster.ResultSet at 0x1b4b61d0>
可迭代对象。它的行可以是元组、命名元组或字典。 - rageszlst=[]; for row in session...: lst.append(row)
,如果没有其他方法的话。然后再连接结果:df = pd.concat(lst)
。这样你就可以避免昂贵的 40k 次调用pd.DataFrame.append
。 - ptrj