不知道你是否已经尝试了GitHub推出的Copilot工具,准确且快速的提示,使得编程已经变成了堆积想法的过程。
这是一个不再需要你完全掌握一个知识点才能实践的时代,只要你知道它就你可以在AI组手帮助下进行工作。
现在大语言模型已经可以根据你的描述生成你想要的SQL和部分简单的编程,不可否认它确实进一步降低了编程的门槛。
就像在DATA+AI峰会上说的一样,Apache Spark的未来的核心目标已转向便捷性与稳定性,而大语言模型的突破将会是便捷性成为现实。
在数据开源社区中,Databrick和Snowflake公司已经加入了弃用数据分析师的竞赛。
Spark英文SDK有什么功能?
Apache Spark 英文版 SDK 是一个允许您用简单的英语编写 Spark 应用程序的工具。它接受英文指令并将其编译成 PySpark 对象,例如 DataFrame。这使得 Spark 更加用户友好和易于访问,使您能够将精力集中在从数据中提取见解上。
英文版 SDK 基于 OpenAI 的 GPT 语言模型,该模型已经过大量文本和代码的训练。通过该模型,英文SDK能够理解并响应各种英文命令。例如,您可以使用英语 SDK 来:
-
执行数据摄取:
SDK 可以使用您提供的描述执行 Web 搜索,利用 LLM 确定最合适的结果,然后顺利地将所选的 Web 数据合并到 Spark 中 - 所有这些只需一步即可完成。
-
创建 DataFrame:
该 SDK 可以从各种来源创建 DataFrame,包括 CSV 文件、JSON 文件和 Web API。
-
转换DataFrames:
该SDK可以对DataFrames进行各种转换,例如过滤、排序和聚合。它还可以使用Python Pandas DataFrames。
-
可视化数据:
SDK 可以使用 Plotly Matplotlib 和 Seaborn 等库创建数据可视化。
Spark英文SDK的原理
Spark英文SDK的流程,如下图所示,它利用编译器将英文指令转换为字节码。该字节码随后由 Apache Spark 引擎执行以执行各种操作,包括 DataFrame 生成和 DataFrame 过滤。

Source Code 代表用简单的英语编写的程序,而不是使用 Pyspark API 的复杂结构。
Compiler 使用ChatGPT 的 GPT 3.5 或 GPT-4 模型来处理此源代码并将其转换为 PySpark
生成的PySpark代码被编译,然后输入spark引擎中,最后引擎解释并执行字节码,执行各种操作,包括 DataFrame 生成、过滤和其他基于提供的英文指令的操作。
英文版 SDK 仍处于开发的早期阶段,但它有潜力彻底改变我们与数据交互的方式。通过让 Spark 更容易被非技术用户使用,英文版 SDK 可以帮助数据工程和数据科学民主化,并让每个人都更容易使用。
如何使用Apache Spark英文版SDK?
步骤一:获取OpenAI API密码
要使用 English SDK 的功能,首先需要一个OpenAI API 密钥。
如何申请一个OpenAI账号以及秘钥可以参考这篇文章https://www.tizi365.com/topic/472.html
可选的可以创建创建 Google API 密钥
步骤二:安装英文版SDK
可以使用以下 pip 命令安装英文版 SDK:
%pip install pyspark-ai
%pip install --upgrade google-api-python-client google-auth-httplib2 google-auth-oauthlib
%pip install langchain
%pip install openai
步骤三:导入必要的模块
from langchain.chat_models import ChatOpenAI
from pyspark_ai import SparkAI
import os
步骤四:设置 API 密钥的环境变量
配置API 密钥:
os.environ['OPENAI_API_KEY'] = 'Your Open AI Key'
os.environ['GOOGLE_API_KEY'] = 'Your Google API Key'
os.environ['GOOGLE_CSE_ID']='Custom search Engine ID '
步骤五:创建语言模型的实例
llm = ChatOpenAI(model_name='gpt-3.5-turbo-16k-0613', temperature=0)
步骤六:初始化并激活SparkAI
spark.ai = SparkAI(llm=llm, verbose=True)
spark.ai.activate()
步骤七:进行数据操作
下面我们展示下如何使用Spark English SDK。
我们直接通过一个链接Url来抓取一个网站,获取其中的2022 年的汽车销售数据,并创建DataFrame。
auto_df = spark.ai.create_df("https://www.carpro.com/blog/full-year-2022-national-auto-sales-by-brand")
display(auto_df)
这个简单的代码块完成了所有繁重的工作,并为我们提供了一个用于分析和可视化的 DataFrame。
获取数据后,我们也可以让其帮忙解释下这个数据。
auto_df.ai.explain()

如上图所示,其给出了这个数据的说明。
English SDK 与 Generative AI 的集成使其能够用简单的英语解释 DataFrame 中包含的数据。此功能增强了数据的可理解性,并使非技术人员更容易从中收集见解。
让其帮忙绘制统计图,其能力更加便捷。
例如,我们可以要求一个饼图,显示 2022 年排名前五的品牌的销售额以及所有其他品牌的总和:
auto_df.ai.plot("pie chart for US sales market shares, show the top 5 brands")
通过此命令,PySpark-AI 制作适当的 Python 代码来生成饼图,然后执行它,为我们提供视觉上直观的数据表示。

此外,我们可以进行一些数据的转换工作,并解释执行后的数据代表什么:
auto_top_growth_df=auto_df.ai.transform("brand with the highest growth")
auto_top_growth_df.show()
auto_top_growth_df.ai.explain()
我们也可以便捷的进行一些校验的工作:
df=spark_ai.create_df("USA presidents", ["president", "vice_president"])
presidents_who_were_vp = df.ai.transform("presidents who were also vice presidents")
presidents_who_were_vp.ai.verify("expect no NULL values")
我们也可以支持些UDF的能力:
@spark_ai.udf
def convert_grades(grade_percent: float) -> str:
"""Convert the grade percent to a letter grade using standard cutoffs"""
...
# COMMAND --------Testing the UDF--
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
spark.udf.register("convert_grades", convert_grades)
percentGrades = [(1, 97.8), (2, 72.3), (3, 81.2)]
df = spark.createDataFrame(percentGrades, ["student_id", "grade_percent"])
df.selectExpr("student_id", "convert_grades(grade_percent)").show()
# COMMAND -------To keep it in the cache.---
spark_ai.commit()
目前,Spark 的英文 SDK 仍在完善中,因此某些复杂的能力还无法使用,不过已经提供的能力就够让人惊讶的了。
总结
在大数据场景上,数据操作的易用性一直是一个成本问题,很多公司打造了基于拖拽或基于SQL的数据平台,然而其局限性和可用性也一直在阻碍发展。当前ChatGPT通用的生成式模型,使得机器理解人的意图成为可能,将直接从底层重构这类易用性的大数据平台。
Apache Spark 的英文版 SDK,英文指令翻译成 PySpark 和 SQL 代码可以降低编程障碍,这使得在易用性上进行大的突破,虽然目前只是采用直接调用Open AI api的方式进行提供,但这种演示性的项目一旦获得认可,就可以更进一步拿到资源Finetune出更适合Spark编程的大语言模型,届时人人都可以使用Spark进行数据分析将不在是梦。