Внешняя таблица AWS Athena из корзины S3 помещает все данные в первый столбец - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь создать внешнюю таблицу в AWS Athena из файла csv.gz в S3.Используемый мной запрос похож на

CREATE EXTERNAL TABLE IF NOT EXISTS table_name (
    column1 INT,
    column2 STRING,
    column3 BIGINT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION 's3://bucket/path/'
TBLPROPERTIES ('skip.header.line.count'='1','compressionType'='gzip')

. Проблема в том, что этот запрос помещает все данные в первый столбец таблицы, оставляя все остальные столбцы пустыми, как если бы он не распознавал разделитель.,Что я делаю не так?

Вот первые две строки одного из файлов CSV:

DT_PROCESSAMENTO,DT_BASE,DT_AGENDAMENTO,DH_ABERTURA,DH_BAIXA,DH_EXEC_INI,DH_EXEC_FIM,ID_SOLICITACAO,ID_TP_OS,ID_TP_FECHAMENTO,ID_CIDADE,CD_EMPRESA,CD_OS,CD_STATUS,CD_BAIXA,CD_CANCELAMENTO,LG_USR_ABERTURA,LG_USR_DESPACHO,LG_USR_BAIXA,LG_USR_VENDEDOR,ST_CONVENIENCIA,ST_IMEDIATA,DS_EQUIPE,CD_BASE,DH_OCORRENCIA,ID_OCORRENCIA,ID_TP_OCORRENCIA,LG_USR_OCORRENCIA,CD_BAIXA_PARA,ID_INDICADOR,DS_INDICADOR,CD_NODE,ID_PONTO,DS_TP_PRODUTO,NM_EMPRESA_EXECUCAO,DS_UNI_BIDI,MIX_DSC,CD_CELULA,NM_BAIRRO,DS_SEGTO_CLIENTE,DS_STATUS_PTV,DS_STATUS_EBT,FX_TEMPO_BASE,DS_TP_OS,DS_AREA_DESP,DS_CD_BAIXA,DS_STATUS_OS,DS_TP_OCORRENCIA,DS_AREA_GEO,NM_REGIONAL,NM_GRUPO,NM_CLUSTER,NM_SUBCLUSTER,NM_CIDADE,DS_PERF_ATENDENTE,DS_PERF_VENDEDOR,DS_PERF_OCORRENCIA,DS_PERF_BAIXA,FG_AV,FG_AV_VPL,FG_AV_PILOTO,FG_AV_SITE,DS_ATENDENTE_SITE,LG_USR_OFENSOR,DS_COLABORADOR,DS_CANAL_ATEND,DS_COORDENADOR,DS_ABERT_ATEND,DS_SITE_OFENSOR
01/02/18 11:00,201801,16/01/18 00:00,16/01/18 14:31,16/01/18 18:11,16/01/18 18:00,16/01/18 18:10,244054819,50,1,533,8256541,1838003383,E,522,,T6156100,OPS$OSWAP,OPS$OSWAP,,NAO,NAO,,12,,,,,522,3,tp-fecha,CICC,11593388,PTV,EMPRESA DO BRASIL,B,Produto1+Produto2+Produto3,codigo,VILA LUGAR,,CONECTADO,CONECTADO,3) 37 A 48,vt - VOIP,AREA LUGAR,T.T - IN / OUT Queimadas,OS TIPO,,,Regional S„o Paulo,Grupo S„o Paulo,Cluster SP Metropolitano,SubCluster SP Oeste,CIDADE,,,,,N„o,N„o,N„o,Sim,AEC,T6156100,NOME DE ALGUEM,NOC,OUTRO NOME DE ALGUEM,EMPRESA BRASIL,CIDADE

Обратите внимание, что есть ошибки кодирования, такие как São Paulo -> S„o Paulo, и я нене знаю, как это влияет на запросы или как их лечить.

1 Ответ

0 голосов
/ 21 декабря 2018

Посмотрев пример данных, я смог создать таблицу, используя ниже DDL и смог запросить данные в порядке.

CREATE EXTERNAL TABLE `sample`(
  `dt_processamento` string, 
  `dt_base` bigint, 
  `dt_agendamento` string, 
  `dh_abertura` string, 
  `dh_baixa` string, 
  `dh_exec_ini` string, 
  `dh_exec_fim` string, 
  `id_solicitacao` bigint, 
  `id_tp_os` bigint, 
  `id_tp_fechamento` bigint, 
  `id_cidade` bigint, 
  `cd_empresa` bigint, 
  `cd_os` bigint, 
  `cd_status` string, 
  `cd_baixa` bigint, 
  `cd_cancelamento` string, 
  `lg_usr_abertura` string, 
  `lg_usr_despacho` string, 
  `lg_usr_baixa` string, 
  `lg_usr_vendedor` string, 
  `st_conveniencia` string, 
  `st_imediata` string, 
  `ds_equipe` string, 
  `cd_base` bigint, 
  `dh_ocorrencia` string, 
  `id_ocorrencia` string, 
  `id_tp_ocorrencia` string, 
  `lg_usr_ocorrencia` string, 
  `cd_baixa_para` bigint, 
  `id_indicador` bigint, 
  `ds_indicador` string, 
  `cd_node` string, 
  `id_ponto` bigint, 
  `ds_tp_produto` string, 
  `nm_empresa_execucao` string, 
  `ds_uni_bidi` string, 
  `mix_dsc` string, 
  `cd_celula` string, 
  `nm_bairro` string, 
  `ds_segto_cliente` string, 
  `ds_status_ptv` string, 
  `ds_status_ebt` string, 
  `fx_tempo_base` string, 
  `ds_tp_os` string, 
  `ds_area_desp` string, 
  `ds_cd_baixa` string, 
  `ds_status_os` string, 
  `ds_tp_ocorrencia` string, 
  `ds_area_geo` string, 
  `nm_regional` string, 
  `nm_grupo` string, 
  `nm_cluster` string, 
  `nm_subcluster` string, 
  `nm_cidade` string, 
  `ds_perf_atendente` string, 
  `ds_perf_vendedor` string, 
  `ds_perf_ocorrencia` string, 
  `ds_perf_baixa` string, 
  `fg_av` string, 
  `fg_av_vpl` string, 
  `fg_av_piloto` string, 
  `fg_av_site` string, 
  `ds_atendente_site` string, 
  `lg_usr_ofensor` string, 
  `ds_colaborador` string, 
  `ds_canal_atend` string, 
  `ds_coordenador` string, 
  `ds_abert_atend` string, 
  `ds_site_ofensor` string)
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY ',' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  's3://bucket/path'

Если ваш файл содержит заголовок, тогда примените tblproperties ("skip.header.line.count "=" 1 "), чтобы пропустить заголовок в ваших результатах.

...