[DÚVIDA] - AWS Glue Erro na execução de JOB - Python Script + Execução de Binário .jar
Oi gente, estou com um script python rodando no AWS Glue que usa a lib "jaydebeapi", que basicamente é uma API está me ajudando a fazer conexão em um banco oracle, o problema é o seguinte: meu código python precisa executar um .jar para executar um driver especifico que a Oracle pede para acessar esse meu banco especificoo (é uma variação de Oracle DB para netsuite) na hora que o glue tenta rodar meu script, ele quebra na hora de abrir o meu .jar com essa função (a variavel jar_local_path é uma variavel global que já estou carregando o caminho desse .jar):
def connect_to_oracle_jdbc(connection_string, user, password):
conn = jaydebeapi.connect(
"com.netsuite.jdbc.openaccess.OpenAccessDriver",
connection_string,
{"user": user, "password": password},
jars=[jar_local_path]
)
return conn
o erro é esse:
JVMNotFoundException: No JVM shared library file (libjvm.so) found. Try setting up the JAVA_HOME environment variable properly.
até o momento eu entendi que preciso configurar o JAVA_HOME para um jdk, mas não sei como setar isso em um JOB no AWS GLUE, alguém já teve esse problema? poderiam me ajudar?
Isso parece só uma questão de environment, talvez as env vars disponíveis para o script não tem a $JAVA_HOME
exportada. Às vezes manipulando a variável $PATH
resolve muita coisa. Não sei como você inicia esse script Python, nem em que SO. Vou supor que é linux, então você poderia fazer isso no início do script:
import os;
os.environ["JAVA_HOME"] = "/path/to/java-stuff" # exemplo: /usr/lib/jvm/jdk1.7.0_25_x64
ou, diretamente antes do script:
JAVA_HOME=/path/to/java-stuff /path/to/my/script.py
isso acima vai exportar a variável e ela estará disponível inclusive pra sessões subshell
Só achei isso https://docs.aws.amazon.com/pt_br/sdk-for-java/latest/developer-guide/java_glue_code_examples.html Não acredito que vá ajudar mas...