Склейте AWS, создав таблицу данных каталога на python boto3 - PullRequest
0 голосов
/ 13 сентября 2018

Я пытался создать таблицу в нашем каталоге данных, используя Python API. В соответствии с документацией, размещенной здесь и здесь для API. Я могу понять, как это происходит. Тем не менее, мне нужно понять, как объявлять структуру поля при создании таблицы, потому что, когда я смотрю на определение хранилища для таблицы здесь , есть какое-либо объяснение того, как я должен определить этот тип столбца для моего стола. К тому же. Я не вижу классификационное свойство для таблицы, где это рассматривается. Может по свойствам? Я использовал boto3 документацию для этого образца

код:

import boto3


client = boto3.client(service_name='glue', region_name='us-east-1')


response = client.create_table(
        DatabaseName='dbname',
        TableInput={
        'Name': 'tbname',
        'Description': 'tb description',
        'Owner': 'I'm',
        'StorageDescriptor': {
            'Columns': [

                { 'Name': 'agents', 'Type': 'struct','Comment': 'from deserializer'  },
                { 'Name': 'conference_sid', 'Type': 'string','Comment': 'from deserializer'  },
                { 'Name': 'call_sid', 'Type': 'string','Comment': 'from deserializer'  }
            ] ,
        'Location': 's3://bucket/location/', 
        'InputFormat': 'org.apache.hadoop.mapred.TextInputFormat',
        'OutputFormat': 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat',
        'Compressed': False,
        'SerdeInfo': {  'SerializationLibrary': 'org.openx.data.jsonserde.JsonSerDe'}
        },
        'TableType' : "EXTERNAL_TABLE"} )

1 Ответ

0 голосов
/ 15 мая 2019

Нашел этот пост, потому что я столкнулся с той же проблемой и в конце концов нашел решение, чтобы вы могли сделать как:

array<struct<id:string,timestamp:bigint,message:string>>

Я нашел эту «подсказку» при использовании Консоли AWS и нажатии на тип данных существующей таблицы, созданной с помощью Crawler. Намекает:

An ARRAY of scalar type as a top - level column.
ARRAY <STRING>

An ARRAY with elements of complex type (STRUCT).
ARRAY < STRUCT <
  place: STRING,
  start_year: INT
>>

An ARRAY as a field (CHILDREN) within a STRUCT. (The STRUCT is inside another    ARRAY, because it is rare for a STRUCT to be a top-level column.)
ARRAY < STRUCT <
  spouse: STRING,
  children: ARRAY <STRING>
>>

A STRUCT as the element type of an ARRAY.
ARRAY < STRUCT <
  street: STRING,
  city: STRING,
  country: STRING
>>
...