0

我正在将一个 python 项目(s3 + Athena)从使用 csv 移植到镶木地板。

我可以制作parquet文件,可以通过Parquet View查看。

我可以将文件上传到 s3 存储桶。

我可以创建指向 s3 存储桶的 Athena 表。

但是,当我在 Athena Web GUI 上查询表时,它运行了 10 分钟(似乎永远不会停止)并且没有显示结果。

整个项目很复杂。我试图简化案例。

1.假设,我们有以下csv文件(test.csv)

    "col1","col2"
    "A","B"

2.然后,我使用以下python(2.7)代码将其转换为镶木地板文件(test.parquet)

    import fastparquet
    import pandas as pd

    df = pd.read_csv(r"test.csv")
    fastparquet.write(r"test.parquet", df, compression="GZIP")

3.通过 s3 Web GUI 将 test.parquet 上传到 s3 存储桶文件夹“abc_bucket/abc_folder”

4.通过Athena Web GUI创建下表

    CREATE EXTERNAL TABLE IF NOT EXISTS abc_folder (
        `col1` string,
        `col2` string)
    STORED AS PARQUET
    LOCATION 's3://abc_bucket/abc_folder/'
    TBLPROPERTIES (
        "parquet.compress"="GZIP"
    );

5.最后,在 Athena 上运行以下 SQL。SQL 运行 10 分钟,似乎永远存在。

    select *
    from abc_folder;

我的问题是上面哪一步是错误的,所以我无法从 Athena 查询表。

非常感谢您提供任何帮助。

4

2 回答 2

2

我们可以通过为给定的 s3 位置创建一个表来读取 athena 中的 parquet 文件。

CREATE EXTERNAL TABLE abc_new_table (
    dayofweek INT,
    flightdate STRING,
    uniquecarrier STRING,
    airlineid INT
)
PARTITIONED BY (flightdate STRING)
STORED AS PARQUET
LOCATION 's3://abc_bucket/abc_folder/'
tblproperties ("parquet.compression"="SNAPPY");

这假定s3://abc_bucket/abc_folder/*目录具有以 SNAPPY 格式压缩的镶木地板文件。

可以在AWS 文档中找到更多详细信息。

于 2021-05-05T17:35:06.093 回答
0

尝试使用“Select From”选项在 S3 存储桶中查看您的镶木地板数据。如果它没问题,那么使用 Athena 创建您的镶木地板文件的表格,并带有适当的表格列标题。稍后预览表格以查看内容。

于 2018-10-31T09:57:11.617 回答