Pyspark e Cassandra protegem bundle.zip

Aug 27 2020

Sou novo nessa tecnologia pyspark cassandra, encontrei muitos recursos sobre Spark.sql no pyspark e acho legal, mas ainda estou preso no nível de conexão com meu banco de dados porque preciso de um pacote seguro.zip de datastax para conectar. Então, lá vou eu com minhas perguntas:

Entendo que esta é a maneira de conectar-se ao meu banco de dados remoto com o shell pyspark:

pyspark --packages com.datastax.spark:spark-cassandra-connector_2.11:2.5.1\ 
        --files path_to/secure-connect-test.zip \
        --conf spark.cassandra.connection.config.cloud.path=secure-connect-test.zip \
        --conf spark.cassandra.auth.username=UserName \
        --conf spark.cassandra.auth.password=Password \
        --conf spark.dse.continuousPagingEnabled=false

Eu baixei os arquivos jar para com.datastax.spark:spark-cassandra-connector_2.11:2.5.1, então copiei esses jars para minha pasta spark/jars (está correto, certo?)

Então, meus comandos do Spark Shell terminam como:

pyspark  --files path_to/secure-connect-test.zip \
        --conf spark.cassandra.connection.config.cloud.path=secure-connect-test.zip \
        --conf spark.cassandra.auth.username=UserName \
        --conf spark.cassandra.auth.password=Password \
        --conf spark.dse.continuousPagingEnabled=false

Agora, eu entendo que todo código pyspark é uma API para controlar o spark, então, todos os comandos acima podem ser reescritos com o código pyspark, os --confparâmetros que eu entendo estão relacionados a .config(value, value):

sparkSession=SparkSession.builder.appName('SparkCassandraApp').config('spark.cassandra.connection.host', 'localhost')

Então, minha pergunta é, como adicionar meu arquivo zip?

Eu vi a maneira de fazer upload de um arquivo para minha sessão Spark, no código pyspark, SparkContext.addFile()mas estou confuso porque tenho que definir o SparkContext antes da sessão Spark, então tenho que definir o SparkContext , adicione meu arquivo e, em seguida, adicione o SparkSession novamente, mesmo que eu repita os mesmos valores? ou posso adicionar o arquivo bundle.zip apenas na Spark Session adicionando o caminho de origem?

Por favor, ajude, eu só quero ter uma visão clara do Spark e sua maneira de trabalhar

Obrigado

Respostas

2 AlexOtt Aug 26 2020 at 23:52

se você estiver usando --files, o Spark fará o upload do arquivo local para o cluster e o disponibilizará para todos os executores, como é feito via .addFile. Nesse caso, você pode apenas especificar o nome do arquivo via spark.cassandra.connection.config.cloud.path. Você não precisa copiar o arquivo para a pasta jars, etc. - ele pode ficar onde foi baixado.

conforme descrito na postagem do blog que mencionei , o arquivo também pode estar localizado em qualquer local acessível por todos os executores, como S3/HDFS/HTTP/... - nesse caso, spark.cassandra.connection.config.cloud.pathpode apenas apontar para esse local sem a necessidade de especificar via --files. Se você copiou o arquivo para todos os executores, também pode usar o caminho completo para esse arquivo comofile://path-to-secure-bundle