在python中使用dsbulk load

r1zhe5dt  于 2021-06-10  发布在  Cassandra
关注(0)|答案(1)|浏览(471)

我在datastax astra中创建了一个cassandra数据库。我可以用python连接到它(使用 cassandra-driver 模块,以及 secure_connect_bundle ). 我在python应用程序中编写了一些api来查询数据库。
我读到我可以上传csv到它使用 dsbulk . 我能够在终端运行以下命令,它的工作。

dsbulk load -url data.csv -k foo_keyspace -t foo_table \
-b "secure-connect-afterpay.zip" -u username -p password -header true

然后我尝试在python中使用 subprocess :

ret = subprocess.run(
    ['dsbulk', 'load', '-url', 'data.csv', '-k', 'foo_keyspace', '-t', 'foo_table', 
     '-b', 'secure-connect-afterpay.zip', '-u', 'username', '-p', 'password', 
     '-header', 'true'],
    capture_output=True
)

但我有 FileNotFoundError: [Errno 2] No such file or directory: 'dsbulk': 'dsbulk' . 为什么是 dsbulk 如果我从python运行它,就不会被识别?
一个相关的问题,它可能不是最佳实践的依靠 subprocess . 有没有更好的方法将批量数据上传到cassandra?

5lwkijsr

5lwkijsr1#

我认为这与子进程处理路径的方式有关。尝试将命令指定为绝对路径或相对路径,如“/dsbulk”或“bin/dsbulk”。
或者,如果您将ds bulk包中的bin目录添加到path环境变量中,它将按您的方式工作。

相关问题