云端数据科学

red-panda的Python项目详细描述


云计算上的数据科学。

警告

由于对f-string的高度依赖,此包仅适用于python>;=3.6。

功能

  • 与s3和redshift之间的数据帧/文件。
  • 在python中对redshift运行查询。
  • 使用内置的redshift管理查询,例如检查正在运行的查询。
  • 使用redshift实用程序函数可以轻松完成创建表等常见任务。
  • 管理S3上的文件。
  • 还提供cli(功能尚未完成)

安装

$ pip install red-panda

使用小熊猫

导入red-panda并创建RedPanda的实例。如果使用debugon(即rp = RedPanda(redshift_conf, s3_conf, debug=True))创建实例,red-panda将打印计划查询,而不是执行它们。

fromred_pandaimportRedPandaredshift_conf={'user':'awesome-developer','password':'strong-password','host':'awesome-domain.us-east-1.redshift.amazonaws.com','port':5432,'dbname':'awesome-db',}s3_conf={'aws_access_key_id':'your-aws-access-key-id','aws_secret_access_key':'your-aws-secret-access-key',# 'aws_session_token': 'temporary-token-if-you-have-one',}rp=RedPanda(redshift_conf,s3_conf)

将pandas数据帧作为新表加载到redshift中。

importpandasaspddf=pd.DataFrame(data={'col1':[1,2],'col2':[3,4]})s3_bucket='s3-bucket-name's3_path='parent-folder/child-folder'# optional, if you don't have any sub folderss3_file_name='test.csv'# optional, randomly generated if not providedrp.df_to_redshift(df,'test_table',bucket=s3_bucket,path=s3_path,append=False)

也可以:

  • 将数据帧或平面文件上载到s3
  • 从s3中删除文件
  • 将s3数据加载到redshift中
  • 将redshift查询结果卸载到s3
  • 以数据帧的形式获取红移查询结果
  • 在redshift上运行查询
  • 将S3文件下载到本地
  • 将内存中的s3文件作为数据帧读取
  • 运行内置的redshift管理查询,例如获取运行查询信息
  • 使用诸如create_table之类的实用程序函数在redshift中快速创建表
  • 使用RedshiftUtilsS3Utils
  • 分隔关注点
s3_key=s3_path+'/'+s3_file_name# DataFrame uploaded to S3rp.df_to_s3(df,s3_bucket,s3_key)# Delete a file on S3rp.delete_from_s3(s3_bucket,s3_key)# Upload a local file to S3pd.to_csv(df,'test_data.csv',index=False)rp.file_to_s3('test_data.csv',s3_bucket,s3_key)# Populate a Redshift table from S3 files# Use a dictionary for column definition, here we minimally define only data_typeredshift_column_definition={'col1':{data_type:'int'},'col2':{data_type:'int'},}rp.s3_to_redshift(s3_bucket,s3_key,'test_table',column_definition=redshift_column_definition)# Unload Redshift query result to S3sql='select * from test_table'rp.redshift_to_s3(sql,s3_bucket,s3_path+'/unload',prefix='unloadtest_')# Obtain Redshift query result as a DataFramedf=rp.redshift_to_df('select * from test_table')# Run queries on Redshiftrp.run_query('create table test_table_copy as select * from test_table')# Download S3 file to localrp.s3_to_file(s3_bucket,s3_key,'local_file_name.csv')# Read S3 file in memory as DataFramedf=rp.s3_to_df(s3_bucket,s3_key,delimiter=',')# csv file in this example# Since we are only going to use Redshift functionalities, we can just use RedshiftUtilsfromred_panda.red_pandaimportRedshiftUtilsru=RedshiftUtils(redshift_conf)# Run built-in Redshift admin queries, such as getting running query informationload_errors=ru.get_load_error(as_df=True)# Use utility functions such as create_table to quickly create tables in Redshiftru.create_table('test_table',redshift_column_definition,sortkey=['col2'],drop_first=True)

有关api文档,请访问https://red-panda.readthedocs.io/en/latest/

待办事项

无特殊顺序:

  • 支持更多数据格式复制。当前仅支持分隔文件。
  • 支持S3到DF的更多数据格式。当前仅支持分隔文件。
  • 改进测试和文档。
  • 从dataframe到redshift推断数据类型的更好方法。
  • 探索如何使用S3 Transfer Manager'supload_fileobjdf_to_s3使用自动多部分上载。
  • 除了从s3源路径复制之外,还添加从s3清单文件复制。
  • 构建cli来管理python之外的数据。

进行中:

  • 支持度阿里云,GCP
  • emr从配置文件创建群集
  • 利用红移切片进行并行处理。分割文件进行复制。

完成时间:

  • 从redshift卸载到s3。
  • 当用户确实有隐式列作为数据帧中的索引时处理。当前索引将自动删除。
  • 为上传到s3的文件添加加密选项。通过添加对s3 put_object/upload_file方法的所有kwargs的支持。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java调用Python函数作为TEID中的UDF   java Android。支持v4导入不工作   java如何影响具有静态属性的类   java如何在从glTexImage2D()分配后编辑纹理的像素颜色   javaspringboot+rediscache+@Cacheable适用于某些方法,而不适用于其他方法   java无法将动态Web模块方面从3.0更改为2.5   java如何在新选项卡中显示打印的文档?   java Google Cloud Endpoints API方法仅在删除用户参数时成功调用   java为什么我可以使用Stack<Double>但不能使用Stack<Double>?   java JDBC PreparedStatement似乎忽略了占位符   java如何设置JInternalFrame的标准图标化位置?   Java文件。copy()不复制文件   基于另一个类的java显示arraylist?   java Android Studio:错误:非法字符:'\u2028'   对象(Java)无法实例化类型映像?   javascript错误:飞行前响应的HTTP状态代码401无效   java确保泛型vararg参数具有相同的类型