Создание таблицы поверх письменного файла паркета в Афине

Я создаю паркетный файл из CSV-файла, используя следующий скрипт Python:

import pandas as pd
import pyarrow as pa
import pyarrow.parquet as pq

csv_file = '~/Desktop/SWA_UK_Pickup_Forecast_HOURLY_M1_at_2017-11-28-04_20_21-UTC_from_28-Nov-2017_to_28-Nov-2017.csv'

chunksize = 10

csv_stream = pd.read_csv(csv_file, sep=',', chunksize=chunksize, low_memory=False)

for i, chunk in enumerate(csv_stream):
    if i == 0:
        parquet_schema = pa.Table.from_pandas(df=chunk).schema
        parquet_writer = pq.ParquetWriter('/Users/kohujwal/Desktop/parquet_forecast_file.parquet', parquet_schema, compression='snappy')
    table = pa.Table.from_pandas(chunk, schema=parquet_schema);
    parquet_writer.write_table(table)

parquet_writer.close();

Затем я вручную загружаю его в какое-то место s3 и создаю над ним таблицу в Афине. Запрос, используемый для создания таблицы:

CREATE EXTERNAL TABLE IF NOT EXISTS forecast_report_lom_parquet (
  `forecast_week` int,
  `for_date` string,
  `forecast_day_of_week` string,
  `merchant_id` string,
  `shipper_account_id` string,
  `shipper_name` string,
  `node_id` string,
  `routing_preference` string,
  `forecast_shipment_count` int,
  `forecast_pallet_count` int,
  `forecast_volume` double )
STORED AS PARQUET
LOCATION 's3://prevoir-athena-input-prod/spike-computation/forecast-reports/parquet/live-order-model/'
tblproperties ("parquet.compress"="SNAPPY")

Таблица создана успешно, однако, когда я пытаюсь сделать запрос к таблице, она не отображает содержимое. Он просто показывает индексы строк и имена столбцов. Вот CSV и файл паркета. Запрос на паркетный стол:

SELECT * FROM prevoir_prod.forecast_report_lom_parquet

Результаты, которые я вижу на консоли.

Кто-нибудь может указать, что здесь происходит не так?

1 ответ

Ваши результаты показывают номера строк. Это означает, что Афина находит файл (ы) на S3 и анализирует их до точки определения строк.

Кажется, что Афина (или, точнее, ParquetSerDe) не может получить столбцы из вашего файла. Это указывает на несоответствие между CREATE EXTERNAL TABLE заявление и фактический файл. Некоторые возможности:

  1. Имена столбцов или типы данных неверны
  2. Файл не сжат должным образом (т.е. попробуйте без сжатия)

Всякий раз, когда у меня есть файл, через который я не могу создать таблицу, я использую сканер Glue для проверки и построения DDL создания. Работает очень хорошо, это просто и экономит кучу проб и ошибок.

Другие вопросы по тегам