批量加载大型数据帧到Astra数据库



我正试图将我的数据帧加载到AstraDB中,但加载需要很长时间。。我想知道是否有一种通过python更快的方法?

import cassandra 
from cassandra.cluster import Cluster
from cassandra.auth import PlainTextAuthProvider
import pandas as pd
cloud_config= {
'secure_connect_bundle': 'secure-connect-capstone-project.zip'
}
auth_provider = PlainTextAuthProvider(user,pass)
cluster = Cluster(cloud=cloud_config, auth_provider=auth_provider)
#connect to keyspace_name
session = cluster.connect('iac689')
query = """insert into data_2 (truck_id, active, reading_id, start_mileage, start_time, truck_name, type)
values (%s,%s,%s,%s,%s,%s,%s)"""
for i in df.values:
session.execute(query, [i[0],i[1],i[2],i[3],i[4],i[5],i[6]])

如果您真的需要通过Python来实现这一点,那么您可以通过以下方式加速代码:

  • 使用准备好的查询-对查询字符串调用session.prepare,并在session.execute中使用它
  • 使用异步API(execute_async(而不是同步(execute(。但你需要跟踪你有多少飞行中的查询,等等,以避免出现错误

真的,我建议不要重新发明轮子,而是将数据转储为CSV或JSON文件,并使用DSBulk将数据加载到Cassandra/Astra中-该工具针对从Cassandra/Astra加载/卸载数据进行了大量优化。

最新更新