亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法使用 Python 從 AWS Glue 數據庫/表讀取數據

無法使用 Python 從 AWS Glue 數據庫/表讀取數據

白板的微信 2023-06-27 16:41:44
我的要求是使用 python 腳本將數據從 AWS Glue 數據庫讀取到數據幀中。當我進行研究時,我與圖書館進行了斗爭 - “awswrangler”。我使用以下代碼來連接和讀取數據:import awswrangler as wrprofile_name = 'aws_profile_dev'REGION = 'us-east-1'#Retreiving credentials to connect to AWSACCESS_KEY_ID, SECRET_ACCESS_KEY,SESSION_TOKEN = get_profile_credentials(profile_name)session = boto3.session.Session(    aws_access_key_id=ACCESS_KEY_ID,    aws_secret_access_key=SECRET_ACCESS_KEY,    aws_session_token=SESSION_TOKEN)my_df= wr.athena.read_sql_table(table= 'mytable_1', database= 'shared_db', boto3_session=session)然而,當我運行上面的代碼時,我收到以下錯誤 - “ValueError:year 0 is out of range”或者,我嘗試使用另一個庫 - “pyathena”。我嘗試使用的代碼是:from pyathena import connectimport pandas as pdconn = connect(aws_access_key_id=ACCESS_KEY_ID,                 aws_secret_access_key=SECRET_ACCESS_KEY,                 aws_session_token=SESSION_TOKEN,                 s3_staging_dir='s3://my-sample-bucket/',                 region_name='us-east-1')df = pd.read_sql("select * from AwsDataCatalog.shared_db.mytable_1 limit 1000", conn)使用它,我可以檢索數據,但它僅在我使用限制時才有效。即,如果我只是無限制地運行查詢,即“select * from AwsDataCatalog.shared_db.mytable_1”,則會出現錯誤 - ValueError:year 0 is out of range奇怪的行為- 例如,如果我運行:df = pd.read_sql("select * from AwsDataCatalog.shared_db.mytable_1 limit 1200", conn)有時它會給出相同的錯誤,如果我只是減小限制值并運行(例如限制 1199),稍后當我使用限制 1200 運行它時它會起作用。但如果我嘗試讀取超過 1300 行,這將不起作用。我的表中共有 2002 行。我需要閱讀整個表格。
查看完整描述

2 回答

?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

在 python 中使用以下代碼來獲取您正在尋找的數據。


    import boto3

    query = "SELECT * from table_name"

    s3_resource = boto3.resource("s3")

    s3_client = boto3.client('s3')

    DATABASE = 'database_name'

    output='s3://output-bucket/output-folder'

    

    athena_client = boto3.client('athena')

    

        # Execution

        response = athena_client.start_query_execution(

            QueryString=query,

            QueryExecutionContext={

                'Database': DATABASE

            },

            ResultConfiguration={

                'OutputLocation': output,

            }

        )

    

    

    queryId = response['QueryExecutionId']


查看完整回答
反對 回復 2023-06-27
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

我找到了一種使用 awswrangler 直接從 Athena 查詢數據到本地計算機上的 pandas 數據幀的方法。這不需要我們提供 S3 上的輸出位置。


profile_name = 'Dev-AWS'

REGION = 'us-east-1'


#this automatically retrieves credentials from your aws credentials file after you run aws configure on command-line

ACCESS_KEY_ID, SECRET_ACCESS_KEY,SESSION_TOKEN = get_profile_credentials(profile_name)


session = boto3.session.Session(

    aws_access_key_id=ACCESS_KEY_ID,

    aws_secret_access_key=SECRET_ACCESS_KEY,

    aws_session_token=SESSION_TOKEN

)


wr.athena.read_sql_query("select * from table_name", database="db_name", boto3_session=session)

或者,如果您不想查詢 Athena,但想讀取整個粘合表,則可以使用:


my_df = wr.athena.read_sql_table(table= 'my_table', database= 'my_db', boto3_session=session)



查看完整回答
反對 回復 2023-06-27
  • 2 回答
  • 0 關注
  • 215 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號