У меня есть следующий boto3
черновой сценарий
#!/usr/bin/env python3
import boto3
client = boto3.client('athena')
BUCKETS='buckets.txt'
DATABASE='some_db'
QUERY_STR="""CREATE EXTERNAL TABLE IF NOT EXISTS some_db.{}(
BucketOwner STRING,
Bucket STRING,
RequestDateTime STRING,
RemoteIP STRING,
Requester STRING,
RequestID STRING,
Operation STRING,
Key STRING,
RequestURI_operation STRING,
RequestURI_key STRING,
RequestURI_httpProtoversion STRING,
HTTPstatus STRING,
ErrorCode STRING,
BytesSent BIGINT,
ObjectSize BIGINT,
TotalTime STRING,
TurnAroundTime STRING,
Referrer STRING,
UserAgent STRING,
VersionId STRING,
HostId STRING,
SigV STRING,
CipherSuite STRING,
AuthType STRING,
EndPoint STRING,
TLSVersion STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1', 'input.regex' = '([^ ]*) ([^ ]*) \\[(.*?)\\] ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) \\\"([^ ]*) ([^ ]*) (- |[^ ]*)\\\" (-|[0-9]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) (\"[^\"]*\") ([^ ]*)(?: ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*) ([^ ]*))?.*$' )
LOCATION 's3://my-bucket/{}'"""
with open(BUCKETS, 'r') as f:
lines = f.readlines()
for line in lines:
query_string = QUERY_STR.format(line, line)
response = client.create_named_query(
Name=line,
Database=DATABASE,
QueryString=QUERY_STR
)
print(response)
При выполнении все ответы возвращаются с кодом состояния 200
.
Почему я не могу увидеть соответствующийтаблицы, которые должны были быть созданы?
Разве я не смогу (по крайней мере) увидеть где-то эти хранимые запросы?
update1 : я сейчас пытаюсь на самом делеСоздайте таблицы с помощью вышеуказанных запросов следующим образом:
for line in lines:
query_string = QUERY_STR.format(DATABASE, line[:-1].replace('-', '_'), line[:-1])
try:
response1 = client.start_query_execution(
QueryString=query_string,
WorkGroup=WORKGROUP,
QueryExecutionContext={
'Database': DATABASE
},
ResultConfiguration={
'OutputLocation': OUTPUT_BUCKET,
},
)
query_execution_id = response1['ResponseMetadata']['RequestId']
print(query_execution_id)
except Exception as e1:
print(query_string)
raise(e1)
Еще раз, скрипт выводит некоторые идентификаторы запросов (похоже, что ошибки не происходит), тем не менее, таблица не создается.
Я также последовал совету @John Rotenstein и инициализировал моего boto3
клиента следующим образом:
client = boto3.client('athena', region_name='us-east-1')