1
resposta

Databricks free edition. Estou recebendo o seguinte erro ao tentar usar o VectorAssembler:

Já tentei de varias formas, mas essa linha assembler = VectorAssembler(inputCols=X, outputCol='features') não funciona, aparentemente não tenho permissão para chamar o construtor da classe e até o momento não encontrei nenhuma informação que ajudasse a alterar essa permissão.

Texto do erro: "Py4JError: An error occurred while calling None.org.apache.spark.ml.feature.VectorAssembler. Trace: py4j.security.Py4JSecurityException: Constructor public org.apache.spark.ml.feature.VectorAssembler(java.lang.String) is not whitelisted."

Imagem do erro no databricks

1 resposta

Ei, João! Tudo bem?

Esse erro é comum em ambientes com restrições na versão gratuita. O que acontece é uma restrição de segurança que está impedindo a criação do objeto devido a um construtor não permitido.

Uma alternativa é usar o Microsoft Azure Databricks, conforme indicado na atividade que informa as mudanças do Databricks Free Edition, para ter acesso a algumas funcionalidades pagas durante o período liberado ao fazer a conta.

Um teste que pode fazer é utilizando corretamente a API PySpark. Por exemplo, um código que possui a criação de um dataframe com duas colunas e usa o VectorAssemble para unir essas colunas no vetor chamado features.

from pyspark.ml.feature import VectorAssembler
from pyspark.sql import SparkSession
from pyspark.sql import Row

spark = SparkSession.builder.appName("ExemploVectorAssembler").getOrCreate()

dados = [Row(p1=1.0, p2=2.0), Row(p1=4.0, p2=5.0)]
df = spark.createDataFrame(dados)

assembler = VectorAssembler(inputCols=["p1", "p2"], outputCol="features")
df_com_features = assembler.transform(df)

df_com_features.show(truncate=False)

Espero que as sugestões sejam um bom ponto de partida para os testes.

Até mais, João!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado!