### Apache Airflow Provider(s)

snowflake

### Versions of Apache Airflow Providers

apache-airflow-providers-snowflake==2.2.0 

### Apache Airflow version

2.2.0

### Operating System

Linux-5.4.141-67.229.amzn2.x86_64-x86_64-with-glibc2.31

### Deployment

Astronomer

### Deployment details

_No response_

### What happened

The `get_connection()` method is called twice in the SnowflakeHook, initializing the connection twice and slowing the hook down. See the following example logs on a single `run` of the SnowflakeHook:


<img width="1383" alt="Screen Shot 2021-11-09 at 9 59 26 PM" src="https://user-images.githubusercontent.com/30101670/141052877-648a5543-cf9a-4c16-82a6-02f6b62b47ba.png">



### What you expected to happen

The code is using the `get_connection` method on [line 271](https://github.com/apache/airflow/blob/main/airflow/providers/snowflake/hooks/snowflake.py#L271) and then calling the method again on [line 272](https://github.com/apache/airflow/blob/main/airflow/providers/snowflake/hooks/snowflake.py#L272)

### How to reproduce

Run the SnowflakeHook

### Anything else

_No response_

### Are you willing to submit PR?

- [X] 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)

airflow/providers/snowflake/hooks/snowflake.py
split_statements_tuple = split_statements(StringIO(sql))
                sql = [sql_string for sql_string, _ in split_statements_tuple if sql_string]
            self.log.debug("Executing %d statements against Snowflake DB", len(sql))
            with closing(conn.cursor(DictCursor)) as cur:
                for sql_statement in sql:
                    self.log.info("Running statement: %s, parameters: %s", sql_statement, parameters)
                    if parameters:
                        cur.execute(sql_statement, parameters)
                    else:
                        cur.execute(sql_statement)
                    execution_info = []
                    for row in cur:
                        self.log.info("Statement execution info - %s", row)
                        execution_info.append(row)
                    self.log.info("Rows affected: %s", cur.rowcount)
                    self.log.info("Snowflake query id: %s", cur.sfqid)
                    self.query_ids.append(cur.sfqid)
            
            
            if not self.get_autocommit(conn):
                conn.commit()
        return execution_info
    def test_connection(self):
        """Test the Snowflake connection by running a simple query."""
        try:
            self.run(sql="select 1")
        except Exception as e:
            return False, str(e)
        return True, "Connection successfully tested"