es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo agregar el conector de bigquery a un clúster existente en dataproc.

Acabo de empezar a usar dataproc para hacer aprendizaje automático en big data en bigquery. Cuando intento ejecutar este código:

df = spark.read.format('bigquery').load('bigquery-public-data.samples.shakespeare')

Recibo un error con una parte como esta:

java.lang.ClassNotFoundException: Error al encontrar el origen de datos: bigquery. Encuentra los paquetes en http://spark.apache.org/third-party-projects.html

Encontré algunos tutoriales como en este repositorio de Git: https://github.com/GoogleCloudDataproc/spark-bigquery-connector

Pero no sé dónde escribir esos scripts y cómo ejecutarlos. ¿Podrías hacerme entender?

Gracias de antemano.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que falta el paquete necesario para usar “bigquery” como fuente de datos en Spark. Puede descargar el paquete requerido desde el enlace proporcionado en el mensaje de error: “http://spark.apache.org/third-party-projects.html”. Una vez que haya descargado el paquete, debe agregarlo a la configuración de su Spark.

    Una forma de hacerlo es estableciendo la propiedad “spark.jars.packages” cuando inicie su aplicación de Spark. Por ejemplo, para agregar el paquete “spark-bigquery-connector”, podría iniciar su aplicación de Spark con el siguiente comando:

    spark-shell --packages com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.22.0
    

    Tenga en cuenta que el comando exacto puede variar según su versión de Spark y la versión del paquete que descargó.

    Alternativamente, si está utilizando una herramienta como PySpark o Jupyter notebooks, puede agregar el paquete a su configuración en su código en lugar de pasarla como un argumento de línea de comando. Por ejemplo:

    from pyspark.sql import SparkSession
    
    spark = SparkSession.builder \
        .appName("MyApp") \
        .config("spark.jars.packages", "com.google.cloud.spark:spark-bigquery-with-dependencies_2.12:0.22.0") \
        .getOrCreate()
    
    df = spark.read.format('bigquery').load('bigquery-public-data.samples.shakespeare')
    

    En este ejemplo, estamos configurando la propiedad “spark.jars.packages” en nuestra configuración de SparkSession, por lo que no es necesario pasarla como un argumento de línea de comando.

    ¡Espero que esto le ayude a resolver el problema! Háganme saber si tienen alguna pregunta adicional.

Comments are closed.