用于与 IBM Cloud Data Engine 服务交互的 Python 客户端
项目描述
ibmcloudsql
允许您在 IBM Cloud 中对存储在对象存储上的数据运行 SQL 语句:
在本地构建和测试库
设置 Python 环境
运行source ./setup_env.sh
它创建并激活一个干净的虚拟 Python 环境。它默认使用 Python 2.7。如果您想要不同的版本,请调整脚本中的第 2 行。
在 Python 环境中安装本地代码
运行./_install.sh
。
在本地测试库
ibmcloudsql/test_credentials.py
使用以下三行和您的相应属性创建一个文件:
apikey='<your IBM Cloud API key>'
instance_crn='<your Data Engine instance CRN>'
result_location='<COS URI of default result location for your SQL result sets>'
...
查看模板文件中的详细信息
- 运行
python ibmcloudsql/test.py
。
包装和出版发行
- 确保
version=...
在setup.py
创建新包之前增加。 - 运行
package.sh
。它将提示输入必须ibmcloudsql
在 pypi.org 上获得包授权的用户名和密码。
示例用法
import ibmcloudsql
my_ibmcloud_apikey = '<your api key here>'
my_instance_crn='<your ibm cloud Data Engine instance CRN here>'
my_target_cos_url='<Cloud Object Storage URL for the SQL result target. Format: cos://<endpoint>/<bucket>/[<prefix>]>'
sqlClient = SQLQuery(my_ibmcloud_apikey, my_instance_crn)
sqlClient.run_sql('SELECT * FROM cos://us-geo/sql/orders.parquet STORED AS PARQUET LIMIT 5 INTO {} STORED AS CSV'.format(my_target_cos_url)).head()
演示笔记本
您可以将 IBM Watson Studio 与以下演示笔记本一起使用,该笔记本展示了使用 ibmcloudsql 各个方面的一些详细示例。
SQLQuery 方法列表
SQLQuery(api_key, instance_crn, target_cos_url=None, token=None, client_info='')
构造函数logon(force=False, token=None)
需要在以下任何其他方法之前调用。它在初始化时将集合交换api_key
为临时 oauth 令牌。如果上次登录时间少于 5 分钟,则调用是 No-Op。无论如何,您都可以使用可选参数强制登录force=True
。当您在没有api_key
但指定自定义的情况下初始化客户端时,token
您可以指定一个新的 `token to login 方法来更新客户端。submit_sql(sql_text, pagesize=None)
jobId
作为字符串返回。分页结果对象的可选页面大小参数(以行为单位)。wait_for_job(jobId)
等待作业结束并返回作业完成状态(completed
或failed
)get_result(jobId, pagenumber=None)
返回整个结果或指定结果页的 SQL 结果数据框。list_results(jobId)
返回一个数据框,其中包含写入的结果对象列表delete_result(jobId)
删除给定 jobId 的云对象存储中的所有结果集对象rename_exact_result(jobId)
将单个分区查询结果重命名为没有文件夹层次结构的精确单个对象名称。get_job(jobId)
以 json 对象的形式返回给定 SQL 作业的详细信息get_jobs()
返回最近提交的 30 个 SQL 作业的列表,其中包含所有详细信息作为数据框run_sql(sql_text)
调用submit_sql
,wait_for_job
和wait_for_job
顺序的复合方法Asql_ui_link()
返回当前配置实例的数据引擎 Web 控制台的浏览器链接get_cos_summary(cos_url)
以 json 形式返回给定 cos url 存储的对象数量和体积的摘要list_cos_objects(cos_url)
返回一个数据框,其中包含在给定 cos url 中找到的对象列表export_job_history(cos_url)
将新作业作为 parquet 文件导出到给定的cos_url
.export_tags_for_cos_objects(cos_url, export_target_cos_file)
将所有对象作为 parquet 文件导出到给定cos_url
的已配置标签以及每个标签的值的给定对象。
例外
RateLimitedException(message)
由于 429 / 已达到并发查询的计划限制而无法提交作业时引发
构造函数选项
api_key
:IAM API 密钥。当此参数设置为None
then 您必须在参数中指定自己的有效 IAM otauth 令牌token
。instance_crn
: 数据引擎实例 CRN 标识符target_cos_url
: 可选的默认目标 URL。当您想在 SQL 语句文本中提供目标 URL 时不要使用。token
:可选的自定义 IAM oauth 令牌。当您指定它时,您必须将api_key
参数设置为None
。client_info
:用于标识 IBM Cloud 中出于 PD 原因的客户端应用程序的可选字符串。max_tries
: 可选整数,用于指定处理请求速率限制时的最大尝试次数。默认值为1
,表示RateLimitedException
响应状态码为 时将通过异常429
。当指定任何大于 的正数时,它将启用指数退避1
。例如,给定max_tries=5
,假设它将获得响应状态码429
4 次,直到第 5 次尝试将获得响应状态码,则201
等待时间将为2s
,4s
和每次尝试。8s
16s