Spark Packages寻宝(一):简单易用的数据准备工具Optimus

作者:李呈祥,花名司麟 ,阿里云智能EMR团队高级技术专家,Apache Hive Committer, Apache Flink Committer,目前主要专注于EMR产品中开源计算引擎的优化工作。


Spark社区在Spark Packages网站中索引了许多第三方库,这些第三方库由不同的开发者贡献,作为Spark生态圈的一部分,扩充了Spark的使用范围和使用场景,其中很多对于我们日常的使用可能有帮助,我们准备开启一个系列文章介绍Spark Packages中一些有意思的第三方库,作为系列的第一篇,本文主要介绍Optimus,一个基于PySpark的简单易用的数据准备工具。

本文的部分内容源自Optimus官网和相关介绍文章,原文链接参考文末引用部分。

在Spark(Pyspark)的支持下,Optimus允许用户使用自己的或一组预先创建的数据转换功能来清理数据,对其进行概要分析并应用与数据分析和机器学习等场景,可以轻松地利用python语言进行所有这些操作。Optimus主要关注与以下几个方面:

  • 创建一个可靠的API来访问和处理数据。

  • 让用户轻松地从Pandas迁移。

  • 使数据探索更加容易。

创建一个可靠的API来访问和处理数据

首先,我们来看看Optimus的基本使用方式

from pyspark.sql import SparkSession
from optimus import Optimus

// 创建context
spark = SparkSession.builder.appName('optimus').getOrCreate()
op= Optimus(spark)

// 加载数据
df = op.load.csv("../examples/data/foo.csv")

// 执行清理
new_df = df\
    .rows.sort("rank","desc")\
    .withColumn('new_age', df.age)\
    .cols.lower(["names","function"])\
    .cols.date_transform("date arrival", "yyyy/MM/dd", "dd-MM-YYYY")\
    .cols.years_between("date arrival", "dd-MM-YYYY", output_cols = "from arrival")\
    .cols.remove_accents("names")\
    .cols.remove_special_chars("names")\
    .rows.drop(df["rank"]>8)\
    .cols.rename(str.lower)\
    .cols.trim("*")\
    .cols.unnest("japanese name", output_cols="other names")\
    .cols.unnest("last position seen",separator=",", output_cols="pos")\
    .cols.drop(["last position seen", "japanese name","date arrival", "cybertronian", "nulltype"])

//保存结果
new_df.save.csv("data/foo.csv")

Optimus基本PySpark框架,重新组织了对数据进行清理/准备的相关API,把数据处理整理为针对dataframe.rows和dataframe.cols两类操作,基于rows和cols实现了非常丰富的针对数据清理和准备相关的接口,用户可以使用这些接口非常方便高效地完成相关工作。在Optimus中,核心的数据操作可以归纳为如下几类:

  • 创建一个DataFrame

  • 用append()追加行或列

  • 使用select()选择行或列

  • 使用apply()更新或转换列数据

  • 使用drop()删除行或列

  • 使用read()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值