Я установил библиотеку arrowkdb и использую ее для загрузки файлов паркета в KDB. Мой каталог $QHOME
теперь содержит:
├── kc.lic
├── arrowkdb.q
├── l64
│ ├──arrowkdb.so
│ └── q
└── q.k
Но при использовании \l
для загрузки arrowkdb.q
возникали следующие ошибки:
evaluation error:
libarrow.so.900: cannot open shared object file: No such file or directory
[3] /home/jiahe/q/arrowkdb.q:5: dt.na:`arrowkdb 2:(`null;1);
^
[0] \l arrowkdb.q
^
Пока проверил:
~/q$ q arrowkdb.q
KDB+ 4.1 2024.07.08 Copyright (C) 1993-2024 Kx Systems
l64/ 16(24)core 579514MB xxxx ubuntu-xxxxx-amd64-base xx.xx.xx.xx EXPIRE 2025.06.15 [email protected] KDB PLUS TRIAL #5020784
q)show t: .arrowkdb.fd.field[`int_field;.arrowkdb.dt.int64[]]
1i
q)
$QHOME
с помощью \l
в блокноте:
интерфейс блокнотаЯ новичок в KDB и мало что знаю об Apache Arrow. Большое спасибо за любые предложения :)
Обновлено: Я тестировал еще несколько раз и обнаружил следующие закономерности:
kdb
conda, где я установил необходимые пакеты для запуска блокнота KDB, \l arrowkdb.q
выдаст ту же ошибку в консоли q, что и в блокноте.base
\l arrowkdb.q
работает нормально.
Есть ли способ проверить, вызвана ли проблема средой анаконды?@ticktalk Я добавил export LD_LIBRARY_PATH = "/home/myname/q/l64:$LD_LIBRARY_PATH"
в свой .bashrc
файл, но проблема осталась та же.
Сравните getenv`LD_LIBRARY_PATH
в q
и в Jupyter.
Оба они возвращают путь "/home/myname/q/l64:"
; Я тоже попробовал setenv
, тоже не помогает:(
Это функция динамической загрузки «2:» https://code.kx.com/q/ref/dynamic-load/.
Поэтому он будет искать библиотеки в $LD_LIBRARY_PATH, если вы используете Linux. Обратите внимание, что в опубликованной вами ошибке говорится, что у вас нет библиотеки libarrow.so, а неarrowkdb.so. Вам нужно поместить все пропущенные библиотеки *.so (правильно созданные для вашей платформы) в $LD_LIBRARY_PATH, и это будет работать.
arrowkdb «Установка сторонней библиотеки» здесь https://github.com/KxSystems/arrowkdb/tree/main?tab=readme-ov-file# Third-party-library-installation
Привет, Алекс, я думаю, что твоя точка зрения верна. Альтернативно я копирую свой файл arrowkdb
в каталог ~/.conda/kx/q
и решаю проблему. Спасибо!
убедитесь, что каталог находится в экспортированной переменной среды LD_LIBRARY_PATH