def METHOD_NAME(self, spark: SparkSession, args: Dict[str, Any]) -> None:
    logger: Logger = self.get_logger(spark=spark)
    # Arguments
    hive_database: str = args[constants.HIVE_BQ_INPUT_DATABASE]
    hive_table: str = args[constants.HIVE_BQ_INPUT_TABLE]
    bigquery_dataset: str = args[constants.HIVE_BQ_OUTPUT_DATASET]
    bigquery_table: str = args[constants.HIVE_BQ_OUTPUT_TABLE]
    bq_temp_bucket: str = args[constants.HIVE_BQ_LD_TEMP_BUCKET_NAME]
    output_mode: str = args[constants.HIVE_BQ_OUTPUT_MODE]
    temp_view: str = args[constants.HIVE_BQ_TEMP_VIEW_NAME]
    sql_query: str = args[constants.HIVE_BQ_SQL_QUERY]
    logger.info(
        "Starting Hive to Bigquery spark job with parameters:\n"
        f"{pprint.pformat(args)}"
    )
    # Read
    input_data = spark.table(hive_database + "." + hive_table)
    if sql_query:
        # Create temp view on source data
        input_data.createGlobalTempView(temp_view)
        # Execute SQL
        output_data = spark.sql(sql_query)
    else:
        output_data = input_data
    # Write
    output_data.write \
        .format(constants.FORMAT_BIGQUERY) \
        .option(constants.TABLE, bigquery_dataset + "." + bigquery_table) \
        .option(constants.TEMP_GCS_BUCKET, bq_temp_bucket) \
        .mode(output_mode) \
        .save()