猿问

AWS Wrangler 在 Python 中建立引擎连接时出错,必须指定区域?

这可能是一个简单的修复,但我无法运行此代码。我一直在 Pycharm 2020.2.3 上使用 AWS Secrets Manager,没有出现任何问题。然而,AWS Wrangler 的问题如下:


读入数据框

test_df = pd.read_csv(source, encoding='latin-1')

检查 df 数据类型

data_types_df = test_df.dtypes

print('Data type of each column of Dataframe:')

print(data_types_df)

将列转换为正确的数据类型

test_df['C'] = pd.to_datetime(test_df['C'])


test_df['E'] = pd.to_datetime(test_df['E'])

检查 df 数据类型

df_new = test_df.dtypes

print('Data type of each column of Dataframe:')

print(df_new)

我已经尝试了下面的两个片段,但出现了相同的错误:

engine = wr.catalog.get_engine("aws-data-wrangler-redshift", region_name=region_name)


engine = wr.catalog.get_engine('redshift+psycopg2://' + Username + ":" + Password + ClusterURL)

错误:

botocore.exceptions.NoRegionError: You must specify a region.

然后我将尝试使用以下两种方法之一将 Pandas Dataframe 转换为 redshift 中的自定义表:


path = f"s3://{bucket}/stage/"

iam_role = 'ARN'

将 df 复制到 redshift 自定义表

wr.db.copy_to_redshift(

    df=df_new,

    path=path,

    con=engine,

    schema="custom",

    table="test_df",

    mode="overwrite",

    iam_role=iam_role,

    primary_keys=["c"]

)

熊猫 df 到红移

wr.pandas.to_redshift(

    dataframe=df_new,

    path=path,

    schema="custom",

    table="test_df",

    connection=con,

    iam_role="YOUR_ROLE_ARN",

    mode="overwrite",

    preserve_index=False

)

任何帮助将非常感激 :)


慕后森
浏览 85回答 1
1回答

繁花如伊

Data Wrangler 在底层使用 Boto3。Boto3 将查找AWS_DEFAULT_REGIONenv 变量。所以你有两个选择:在您的文件中设置~/.aws/config:[default]   region=us-east-1或者将其设置为 PC 中的环境变量:export AWS_DEFAULT_REGION=us-east-1更具体地说,您可以在 PyCharm 中设置环境变量
随时随地看视频慕课网APP

相关分类

Python
我要回答