AWS Wrangler 不支持将 numpy.ndarray 类型直接写入 DynamoDB,需要将其转换为支持的数据类型。可以通过在代码中使用 astype() 方法将 numpy.ndarray 类型转换为支持的数据类型,例如将 numpy.float64 转换为 Python float。示例代码如下:
import boto3
import awswrangler as wr
import pandas as pd
import numpy as np
session = boto3.Session()
s3 = session.client('s3')
dynamodb = session.resource('dynamodb')
df = pd.read_parquet('s3://my-bucket/my-prefix/my-file.parquet')
df['my_array_column'] = df['my_array_column'].astype(np.float64) # 转换为 float 类型
items = wr.pandas.df_to_dict(df)
table = dynamodb.Table('my-table')
with table.batch_writer() as batch:
for item in items:
batch.put_item(Item=item)
这段代码从 S3 中读取 Parquet 文件,使用 pandas 将其转换为 DataFrame,并使用 astype() 方法将 numpy.ndarray 类型转换为 float 类型。然后,通过将 DataFrame 转换为字典,使用 AWS Wrangler 将其写入 DynamoDB 表中。