云端数据科学

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是通过internet与客户机/服务器应用程序交互的最佳方式吗?   awt为什么不推荐java getPeer调用?   java类的添加方法   java在启动tomcat时传递数据库身份验证详细信息   如何创建具有关联值(如Swift enum)的Java枚举?   如何清理这个Java示例内存   visualvm如何在Java Visual VM中解释大型自时结果?   当实例变量的名称与参数变量相同时,java调用实例变量   eclipse缺少工件组织。硒。硒:seleniumjava:jar:3.14.59   java如何在Android Studio中Expandablelistview的子布局中使用Listview   从Guava 19升级到20时出现java编译错误   java在Maven 2中,我如何知道哪个依赖项来自于可传递依赖项?   需要javascript简单数据分级应用程序支持   接受特定对象或其子类型的java通用方法   在Java中剥离HTML   错误的Java字符串连接   Mybatis,Mysql中重复更新查询的java语法错误