#!/usr/bin/env impala-python # # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. from impala.dbapi import connect as impala_connect from optparse import OptionParser parser = OptionParser() parser.add_option('--host') parser.add_option('--port', type='int', default=21050) parser.add_option('--db_name', default='impala_perf_results') parser.add_option('--use_secure_connection', default=False, action='store_true') options, args = parser.parse_args() CREATE_STATEMENTS = [''' CREATE EXTERNAL TABLE IF NOT EXISTS ExecutionResults ( result_id string, run_info_id string, query_id string, workload_id string, file_type_id string, num_clients INT, num_iterations INT, cluster_name string, executor_name string, exec_time double, run_date timestamp, version string ) stored as parquet; ''', ''' CREATE EXTERNAL TABLE IF NOT EXISTS Queries ( query_id string, name string, query_string string, notes string ) stored as parquet; ''', ''' CREATE EXTERNAL TABLE IF NOT EXISTS Workloads ( workload_id string, name string, scale_factor string ) stored as parquet; ''', ''' CREATE EXTERNAL TABLE IF NOT EXISTS FileTypes ( file_type_id string, file_format string, compression_codec string, compression_type string ) stored as parquet; ''', ''' CREATE EXTERNAL TABLE IF NOT EXISTS RunInfos ( run_info_id string, run_info string, user string ) stored as parquet; ''', ''' CREATE EXTERNAL TABLE IF NOT EXISTS RuntimeProfiles ( result_id string, profile string ) stored as parquet; '''] def create_database(): if options.use_secure_connection: connection = impala_connect(options.host, options.port, use_ssl=True, auth_mechanism='GSSAPI') else: connection = impala_connect(options.host, options.port) cursor = connection.cursor() cursor.execute('CREATE DATABASE IF NOT EXISTS {0}'.format(options.db_name)) cursor.execute('USE {0}'.format(options.db_name)) for create_statement in CREATE_STATEMENTS: cursor.execute(create_statement) if __name__ == '__main__': create_database()