Python 在雅典娜的书面拼花文件上创建表格

Python 在雅典娜的书面拼花文件上创建表格,python,parquet,amazon-athena,pyarrow,apache-arrow,Python,Parquet,Amazon Athena,Pyarrow,Apache Arrow,我正在使用以下python脚本从CSV文件创建拼花地板文件: 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 =

我正在使用以下python脚本从CSV文件创建拼花地板文件:

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位置,并在Athena中创建一个表。用于创建表的查询:

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")
该表已成功创建,但是当我尝试查询该表时,它不会显示内容。它只显示行和列名的索引。这是和的。对拼花地板表的查询:

SELECT * FROM prevoir_prod.forecast_report_lom_parquet
我在控制台上看到的


有人能指出这里出了什么问题吗?

您的结果显示了行号。这意味着Athena正在S3上查找文件,并对其进行解析以识别行

看起来Athena(或者更准确地说,the)无法从您的文件中获取列。这表明
CREATE EXTERNAL TABLE
语句与实际文件不匹配。一些可能性:

  • 列名或数据类型错误
  • 文件未按预期压缩(即尝试不压缩)

  • 每当我有一个无法创建表的文件时,我都会使用Glue crawler来检查和构建create DDL。它工作得非常好,非常简单,并且节省了大量的尝试和错误。

    我在分区表的情况下看到了这种行为。创建表DDL后,需要运行:MSCK REPAIR table forecast\u report\u lom\u parquet;我想知道“修理台”是否也能帮助普通桌子?我遇到了完全相同的问题,运行
    MSCK修复
    无法解决此问题。