- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已使用 PyCharm Pro 版本连接到 AWS Athena。它连接成功,但每当我运行查询时,我都会得到:
The requested fetchSize is more than the allowed value in Athena. Please reduce the fetchSize and try again. Refer to the Athena documentation for valid fetchSize values.
我已从 AWS Athena JDBC documentation 下载了 Athena JDBC 驱动程序
可能是什么问题?
最佳答案
关于获取大小、JDBC 和 AWS athena,需要考虑一件事。似乎有一个 semi-documented but well known limit of 1000 rows per fetch 。我知道热门PyAthenaJDBC library将其设置为default fetch size 。所以,这可能是你问题的一部分。
当我尝试一次获取超过 1000 行时,可能会产生获取大小错误。
from pyathenajdbc import connect
conn = connect(s3_staging_dir='s3://SOMEBUCKET/',
region_name='us-east-1')
cur = conn.cursor()
cur.execute('SELECT * FROM SOMEDATABASE.big_table LIMIT 5000')
results = cur.fetchall()
print len(results)
# Note: The cursor class actually has a setter method to
# keep users from setting illegal fetch sizes
cur._arraysize = 1001 # Set array size one greater than the default
cur.execute('SELECT * FROM athena_test.big_table LIMIT 5000')
results = cur.fetchall() # Generate an error
java.sql.SQLExceptionPyRaisable: java.sql.SQLException: The requested fetchSize is more than the allowed value in Athena. Please reduce the fetchSize and try again. Refer to the Athena documentation for valid fetchSize values.
潜在的解决方案包括:
对于我的许多 Python 脚本,我使用类似于以下的工作流程。
import boto3
import time
sql = 'SELECT * from athena_test.big_table'
database = 'SOMEDATABASE'
bucket_name = 'SOMEBUCKET'
output_path = '/home/zerodf/temp/somedata.csv'
client = boto3.client('athena')
config = {'OutputLocation': 's3://' + bucket_name + '/',
'EncryptionConfiguration': {'EncryptionOption': 'SSE_S3'}}
execution_results = client.start_query_execution(QueryString = sql,
QueryExecutionContext =
{'Database': database},
ResultConfiguration = config)
execution_id = str(execution_results[u'QueryExecutionId'])
remote_file = execution_id + '.csv'
while True:
query_execution_results = client.get_query_execution(QueryExecutionId =
execution_id)
if query_execution_results['QueryExecution']['Status']['State'] == u'SUCCEEDED':
break
else:
time.sleep(60)
s3 = boto3.resource('s3')
s3.Bucket(bucket_name).download_file(remote_file, output_path)
显然,生产代码更加复杂。
关于pycharm - 使用 PyCharm 通过 JDBC 连接到 AWS Athena - fetchSize 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47376922/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!