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



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

读入数据帧

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数据帧转换为红移中的自定义表:

path = f"s3://{bucket}/stage/"
iam_role = 'ARN'

将df复制到红移自定义表

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"]
)

Pandas 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
)

任何帮助都将不胜感激:(

Data Wrangler在引擎盖下使用Boto3。Boto3将查找AWS_DEFAULT_REGION环境变量。所以你有两个选择:

~/.aws/config文件中设置:

[default]  
region=us-east-1

或者将其设置为PC中的env变量:

export AWS_DEFAULT_REGION=us-east-1

更具体地说,您可以在PyCharm 中设置环境变量

最新更新