class_docstr: FeatureGroup definition.
  
  This class instantiates a FeatureGroup object that comprises of a name for the FeatureGroup,
  session instance, and a list of feature definition objects i.e., FeatureDefinition.
  
  Attributes:
      name (str): name of the FeatureGroup instance.
      sagemaker_session (Session): session instance to perform boto calls.
          If None, a new Session will be created.
      feature_definitions (Sequence[FeatureDefinition]): list of FeatureDefinitions.
class_docstr_tok: ["FeatureGroup","definition",".","This","class","instantiates","a","FeatureGroup","object","that","comprises","of","a","name","for","the","FeatureGroup",",","session","instance",",","and","a","list","of","feature","definition","objects","i.e.",",","FeatureDefinition",".","Attributes",":","name","(","str",")",":","name","of","the","FeatureGroup","instance",".","sagemaker_session","(","Session",")",":","session","instance","to","perform","boto","calls",".","If","None",",","a","new","Session","will","be","created",".","feature_definitions","(","Sequence","[","FeatureDefinition","]",")",":","list","of","FeatureDefinitions","."]
docstr: Generate Hive DDL commands to define or change structure of tables or databases in Hive.
  
  Schema of the table is generated based on the feature definitions. Columns are named
  after feature name and data-type are inferred based on feature type. Integral feature
  type is mapped to INT data-type. Fractional feature type is mapped to FLOAT data-type.
  String feature type is mapped to STRING data-type.
  
  Args:
      database: name of the database. If not set "sagemaker_featurestore" will be used.
      table_name: name of the table. If not set the name of this feature group will be
          used.
  
  Returns:
      Generated create table DDL string.
docstr_tok: ["Generate","Hive","DDL","commands","to","define","or","change","structure","of","tables","or","databases","in","Hive",".","Schema","of","the","table","is","generated","based","on","the","feature","definitions",".","Columns","are","named","after","feature","name","and","data-type","are","inferred","based","on","feature","type",".","Integral","feature","type","is","mapped","to","INT","data-type",".","Fractional","feature","type","is","mapped","to","FLOAT","data-type",".","String","feature","type","is","mapped","to","STRING","data-type",".","Args",":","database",":","name","of","the","database",".","If","not","set","``","sagemaker_featurestore","''","will","be","used",".","table_name",":","name","of","the","table",".","If","not","set","the","name","of","this","feature","group","will","be","used",".","Returns",":","Generated","create","table","DDL","string","."]
code: def as_hive_ddl(
      self,
      database: str = "sagemaker_featurestore",
      table_name: str = None,
  ) -> str:
      """Generate Hive DDL commands to define or change structure of tables or databases in Hive.
  
      Schema of the table is generated based on the feature definitions. Columns are named
      after feature name and data-type are inferred based on feature type. Integral feature
      type is mapped to INT data-type. Fractional feature type is mapped to FLOAT data-type.
      String feature type is mapped to STRING data-type.
  
      Args:
          database: name of the database. If not set "sagemaker_featurestore" will be used.
          table_name: name of the table. If not set the name of this feature group will be
              used.
  
      Returns:
          Generated create table DDL string.
      """
      if not table_name:
          table_name = self.name
  
      resolved_output_s3_uri = (
          self.describe()
          .get("OfflineStoreConfig")
          .get("S3StorageConfig")
          .get("ResolvedOutputS3Uri")
      )
  
      ddl = f"CREATE EXTERNAL TABLE IF NOT EXISTS {database}.{table_name} (\n"
      for definition in self.feature_definitions:
          ddl += (
              f"  {definition.feature_name} "
              f"{self._FEATURE_TYPE_TO_DDL_DATA_TYPE_MAP.get(definition.feature_type.value)}\n"
          )
      ddl += "  write_time TIMESTAMP\n"
      ddl += "  event_time TIMESTAMP\n"
      ddl += "  is_deleted BOOLEAN\n"
      ddl += ")\n"
      ddl += (
          "ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'\n"
          "  STORED AS\n"
          "  INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat'\n"
          "  OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat'\n"
          f"LOCATION '{resolved_output_s3_uri}'"
      )
      return ddl
  
imports: from __future__ import absolute_import
  import copy
  import logging
  import math
  import os
  import tempfile
  from concurrent.futures import as_completed
  from concurrent.futures import ThreadPoolExecutor
  from typing import Optional, Sequence, List, Dict, Any, Union
  from urllib.parse import urlparse
  from multiprocessing.pool import AsyncResult
  import signal
  import attr
  import pandas
  from pandas import DataFrame
  import boto3
  from botocore.config import Config
  from pathos.multiprocessing import ProcessingPool
  from sagemaker.config import FEATURE_GROUP_ROLE_ARN_PATH, FEATURE_GROUP_OFFLINE_STORE_KMS_KEY_ID_PATH, FEATURE_GROUP_ONLINE_STORE_KMS_KEY_ID_PATH
  from sagemaker.session import Session
  from sagemaker.feature_store.feature_definition import FeatureDefinition, FeatureTypeEnum
  from sagemaker.feature_store.inputs import OnlineStoreConfig, OnlineStoreSecurityConfig, S3StorageConfig, OfflineStoreConfig, DataCatalogConfig, FeatureValue, FeatureParameter, TableFormatEnum, DeletionModeEnum, TtlDuration, OnlineStoreConfigUpdate, OnlineStoreStorageTypeEnum
  from sagemaker.utils import resolve_value_from_config, format_tags, Tags
label_desc: Use image node_id 15 for calling the FeatureGroup obj's underlying member method code with example usage: obj.as_hive_ddl(database, table_name) and returns: ddl