9eb0072c6b8bce90f960e0faa260980b.gif

English SDK for Spark : 将英语作为一种新的编程语言,将生成式 AI 当做编译器, 将 Python 视作字节码!

本文主要介绍了 Apache Spark 的英语软件开发套件(SDK)的重要性和目标,以及它采用生成式 AI 技术来丰富Spark 的使用体验。它还提到了GitHub Copilot 对 AI 辅助代码开发的影响,以及其存在的限制和问题。本文还绍了英语 SDK 的特性,包括数据获取、DataFrame 操作、自定义函数(UDFs)和缓存等。最后,鼓励读者积极参与英语 SDK 的开发和探索,为扩大 Apache Spark 的影响力贡献一份力量。

原文链接:https://www.databricks.com/blog/introducing-english-new-programming-language-apache-spark

未经允许,禁止转载!

作者 | Gengliang Wang,Xiangrui Meng,Reynold Xin,Allison Wang,Amanda Liu和Denny Lee       

译者 | 明明如月

责编 | 夏萌

出品 | CSDN(ID:CSDNnews)

98e90c5a0cd29bbcc2ef73413d1a0ce2.png

导言

我们非常激动地向大家介绍 Apache Spark 的英语软件开发套件(SDK)。这是一个革命性的工具,旨在丰富你的 Spark 使用体验。Apache Spark™ 在全球范围内,覆盖 208 个国家和地区,年下载量超过 10 亿次,已经在大规模数据分析领域取得了显著成绩。我们的英语 SDK 采用先进的生成型 AI 技术,旨在扩大这个活跃的社区,使 Spark 在易用性和亲和度上达到前所未有的高度!

94e1f7ecefe3c50b8d19bf8f9857a954.png

缘起

GitHub Copilot 对 AI 辅助的代码开发领域产生了深远的影响。虽然它功能强大,但用户需要理解生成的代码后才能提交。同时,审查者也需要理解代码才能进行审查。这可能会限制其广泛应用的一大阻碍。当处理 Spark 表和 DataFrames 时,它偶尔也会生成不正确或不符合预期的代码。下面的 GIF 动图展示了这一点,Copilot 提出了一个窗口规范,并引用了不存在的dept_id列,这需要一些专业知识才能理解。

15eb2d2346df9aef9555c5214cff355e.gif

与其将 AI 视为副驾驶,为何不让 AI 当做司机,我们坐在豪华的后座享受呢?这就是我们英语 SDK 所要扮演的角色。我们发现,尖端的大型语言模型对 Spark 非常了解,这得益于优秀的 Spark 社区,他们在过去十年中,贡献了大量的开放的、高质量的内容,比如 API 文档、开源项目、问题和答案、教程和书籍等。现在,我们将这些生成型 AI 对 Spark 的专业知识融入到英文 SDK 中。你不再需要理解复杂的生成代码,只需用简单的英文指令即可得到结果:

transformed_df = df.ai.transform('get 4 week moving average sales by dept')

英语 SDK 通过理解 Spark 表和 DataFrames 来处理复杂性,并直接返回一个正确的 DataFrame !

我们的愿景是:将英文作为一种编程语言,并使用生成式 AI 将这些英文指令编译成 PySpark 和 SQL 代码。这种创新的方式旨在降低编程的门槛和简化学习曲线。这个愿景是推动英文 SDK 的主要驱动力,我们的目标是扩大 Spark 的影响力,让 Spark 从一个成功走向另一个成功。

f50550962d2c31a9afe3edc6ce137e49.png

c486b27b8ef5250dd86cf4675f953887.png

英语 SDK 的特性

英语 SDK 通过实现以下关键特性,使 Spark 的开发过程变得更简单:

  • 数据获取:根据你的描述,SDK 可以进行网络搜索,运用大型语言模型 (LLM) 确定最佳结果,然后顺利地将选定的网络数据集成到 Spark 中,这些操作都能在一个步骤中完成。

  • DataFrame 操作:SDK 对指定的 DataFrame 提供了功能,根据你的英文描述执行转换、绘图和解释操作。这些功能大大提升了代码的可读性和效率,使得对 DataFrames 的操作更加直接和直观。

  • 自定义函数 (UDFs):SDK 提供了简洁的创建 UDFs 的流程。你只需要提供一段描述,AI 就可以负责代码的补全。这一特性简化了 UDF 的创建过程,让你可以专注于函数定义,而 AI 则会处理其余部分。

  • 缓存:SDK 吸取了缓存的优点以提升执行速度,保证结果的可复用性,并节省成本。

4a90b6840a500dccbb40bbfbb25d5127.png

示例

为了进一步说明如何使用英语 SDK,我们将通过一些例子进行演示:

数据获取 

如果你是一名数据科学家,需要导入2022年美国全国汽车销售数据,您只需要两行代码即可完成:

spark_ai = SparkAI()
auto_df = spark_ai.create_df("2022 USA national auto sales by brand")

DataFrame 操作 

对于给定的 DataFrame 对象,SDK 允许你运行以 df.ai 开头的方法。这包括转换、绘图、DataFrame 解释等等。

要激活 PySpark DataFrame 的部分函数:

spark_ai.activate()

要预览 auto_df:

auto_df.ai.plot()

3a9d32eecad1415cff4a39b60dadc58f.png

要查看各汽车公司的市场份额分布:

auto_df.ai.plot("pie chart for US sales market shares, show the top 5 brands and the sum of others")

b6e7048ccd62f99e98795f0445e87470.png

要获取增长最快的品牌:

auto_top_growth_df=auto_df.ai.transform("top brand with the highest growth")
auto_top_growth_df.show()

b490082f10170025a0e16583683079fd.png

要获取 DataFrame 的解释:

auto_top_growth_df.ai.explain()

总的来说,这个 DataFrame 正在查找销售增长最快的品牌。它将结果按销售增长率降序排列,并仅返回增长最快的结果。

自定义函数 (UDFs) SDK 

支持通过简单而清晰的方式创建自定义函数。使用 @spark_ai.udf装饰器,你只需定义一个带有文档字符串的函数,SDK 就会在后台自动完成代码生成:

@spark_ai.udf
def convert_grades(grade_percent: float) -> str:
 """Convert the grade percent to a letter grade using standard cutoffs"""
 ...

现在,你可以在 SQL 查询或 DataFrames 中使用这个自定义函数(UDF)

SELECT student_id, convert_grades(grade_percent) FROM grade

14865a9afe56236cbb07cbcab2a4b30f.png

总结

Apache Spark 的英语 SDK 是一个既简洁又强大的工具,能够显著提升你的开发效率。它的目标是简化复杂的任务,减少必需的代码量,使你可以专注于从数据中挖掘洞察。

虽然英语 SDK 还处于早期的开发阶段,但未来可期。我们鼓励你去尝试这个创新的工具,亲身感受其带来的便利,并考虑为此项目贡献自己的一份力量。不要在这场革命中袖手旁观,而应该积极参与其中。现在就去 pyspark.ai 上探索和体验英语 SDK 的强大功能吧。你的参与和洞见,将为扩大 Apache Spark 的影响力做出重要贡献。

推荐阅读:

▶阿里发布免费的全新可变字体;Stability AI CEO:5年内,人类程序员将不复存在;Perl 5.38发布|极客头条

因资金短缺,全职开发者自述:这款开源软件可能没有未来了!

▶Mac 上能跑国产系统了!深度 deepin 官宣:正式适配 M1 芯片

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐