### Apache Airflow version

Other Airflow 2 version (please specify below)
Airflow 2.4.2

### What happened

BaseSQLToGCSOperator creates row group for each rows during parquet generation, which cause compression not work and increase file size.
![image](https://github.com/apache/airflow/assets/51909776/bf256065-c130-4354-81c7-8ca2ed4e8d93)


### What you think should happen instead

_No response_

### How to reproduce

OracleToGCSOperator(
        task_id='oracle_to_gcs_parquet_test',
        gcp_conn_id=GCP_CONNECTION,
        oracle_conn_id=ORACLE_CONNECTION,
        sql='',
        bucket=GCS_BUCKET_NAME,
        filename='',
        export_format='parquet',
)

### Operating System

CentOS Linux 7

### Versions of Apache Airflow Providers

apache-airflow-providers-apache-hive  2.1.0
apache-airflow-providers-apache-sqoop 2.0.2
apache-airflow-providers-celery       3.0.0
apache-airflow-providers-common-sql   1.2.0
apache-airflow-providers-ftp          3.1.0
apache-airflow-providers-google       8.4.0
apache-airflow-providers-http         4.0.0
apache-airflow-providers-imap         3.0.0
apache-airflow-providers-mysql        3.0.0
apache-airflow-providers-oracle       2.1.0
apache-airflow-providers-salesforce   5.3.0
apache-airflow-providers-sqlite       3.2.1

### Deployment

Official Apache Airflow Helm Chart

### Deployment details

_No response_

### Anything else

_No response_

### Are you willing to submit PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

of the last account in the list, which will be impersonated in the request.
        If set as a string, the account must grant the originating account
        the Service Account Token Creator IAM role.
        If set as a sequence, the identities from the list must grant
        Service Account Token Creator IAM role to the directly preceding identity, with first
        account from the list granting this role to the originating account (templated).
    :param upload_metadata: whether to upload the row count metadata as blob metadata
    :param exclude_columns: set of columns to exclude from transmission
    :param partition_columns: list of columns to use for file partitioning. In order to use
        this parameter, you must sort your dataset by partition_columns. Do this by
        passing an ORDER BY clause to the sql query. Files are uploaded to GCS as objects
        with a hive style partitioning directory structure (templated).
    :param write_on_empty: Optional parameter to specify whether to write a file if the
        export does not return any rows. Default is False so we will not write a file
        if the export returns no rows.
    """
    template_fields: Sequence[str] = (
        "sql",
        "bucket",
        "filename",
        "schema_filename",
        "schema",
        "parameters",
        "impersonation_chain",
        "partition_columns",
    )
    template_ext: Sequence[str] = (".sql",)
    template_fields_renderers = {"sql": "sql"}
    ui_color = "#a0e08c"
    def __init__(