首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AwsWrangler的自定义拼花模式

使用AwsWrangler的自定义拼花模式
EN

Stack Overflow用户
提问于 2022-02-22 22:23:09
回答 1查看 464关注 0票数 0

我正在创建和上传拼花文件到AWS S3使用awswrangler。问题在于它自动生成模式,而且由于某些字段可以以不同的格式(有时是字符串,有时是数字)出现,所以在试图读取文件时会遇到问题。

我想要定义一个自定义架构。从awswrangler文档中,我看到可以将dtype作为参数传递。但上面说这是给雅典娜/格鲁的。我需要知道这个参数是否也意味着我正在传递拼花文件的模式,因为我不能在本地测试它(很困难的情况,说来话长)

EN

回答 1

Stack Overflow用户

发布于 2022-08-02 08:53:29

据我所知,您希望使用使用自定义拼花模式的pandas.DataFrame方法转储awswrangler.s3.to_parquet,这样模式就不会从pandas.DataFrame类型中推断出来。

Awswrangler允许使用参数dtype来实现这一点,即使文档仅仅提到它是为了创建基于拼花文件的雅典娜表。在幕后,Awswrangler执行一系列函数调用,最后调用def athena2pandas(dtype: str),在使用pyarrow.parquet.ParquetWriter编写最终的拼图文件之前,该函数会将您的dtype: Dict[str, str]转换为兼容的Pyarrow类型。

这意味着您必须使用函数声明中出现的类型(字符串格式)(这些类型是AThena列类型):"tinyint“、"smallint”、"int“、”int“、"bigint”、"float“、"real”、"double“、”布尔“、" string”、"char“、"varchar”、“时间戳”、“带时区的时间戳”、"datetime64“、”日期“、”十进制“、”二进制“、”变量“。

代码语言:javascript
复制
import awswrangler as wr
import pandas as pd
import pyarrow as pa

// create an example pandas.DataFrame 
df = pd.DataFrame.from_dict({"int_col": [1, 2, 3], "bool_col": [True, False, True], "str_col": ["foo", "bar", "baz"]})
// write paruqte file to S3 using dtype parameter to declare specific column types
wr.s3.to_parquet(df, "s3://YOUR_BUCKEY/FILE_KEY", dtype={"int_col": "int", "bool_col": "boolean", "str_col": "string"})

注意:不能使用Pyarrow.Schema传递客户pyarrow_additional_kwargs

资源:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71229059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档