开始
加载和管理数据
处理数据
政府
引用和资源
2023年2月17日更新
给我们反馈
本文向您展示如何使用Apache火花Scala DataFrame加载和转换数据API在砖。
另请参阅Apache火花Scala API参考。
DataFrame是一个二维标签数据结构可能不同类型的列。你能想到的DataFrame像电子表格,SQL表或词典系列对象。Apache火花DataFrames提供一组丰富的功能(选择列、过滤、连接、聚集),允许您来有效地解决常见的数据分析问题。
Apache火花DataFrames抽象之上的弹性分布数据集(抽样)。火花DataFrames和火花SQL使用一个统一的规划和优化引擎,允许您获得几乎相同的性能在所有受支持的语言在砖(Python、SQL、Scala和R)。
Apache火花数据集的API提供类型安全的,面向对象的编程接口。DataFrame一个无类型别名吗数据集(行)。
DataFrame
数据集(行)
砖的文档使用术语DataFrame对于大多数技术参考和指导,因为这对于Python语言是包容,Scala, r .看到Scala笔记本数据聚合器示例。
大多数Apache返回DataFrame火花查询。这包括阅读从表,从文件加载数据,操作转换数据。
您还可以创建一个DataFrame从类的列表,比如下面的例子:
情况下类员工(id:Int,的名字:字符串)瓦尔df=Seq(新员工(1,“伊利亚”),新员工(2,“Teo”),新员工(3,“方”))。toDF
砖使用三角洲湖默认所有表。您可以很容易地加载表DataFrames,比如下面的例子:
火花。读。表(“< catalog_name >, < schema_name >。< table_name > ")
你可以从许多支持加载数据文件格式。下面的例子使用了一个可用的数据集/ databricks-datasets目录,可以从大部分工作区。看到样本数据集。
/ databricks-datasets
瓦尔df=火花。读。格式(“csv”)。选项(“头”,“真正的”)。选项(“inferSchema”,“真正的”)。负载(“/ databricks-datasets /样本/ population-vs-price / data_geo.csv”)
大多数的结果返回DataFrame火花转换。你可以分配这些结果返回给一个DataFrame变量,类似于如何使用ct,临时观点,或DataFrames其他系统。
DataFrames使用标准的SQL连接操作语义。加入返回合并后的结果两个DataFrames基于提供的匹配条件和连接类型。下面的例子是一个内连接,也就是默认值:
瓦尔joined_df=df1。加入(df2,joinType=“内心”,usingColumn=“id”)
您可以添加的行DataFrame到另一个使用union操作,如以下示例:
瓦尔unioned_df=df1。联盟(df2)
您可以过滤DataFrame使用行.filter ()orgydF4y2Ba其中()。没有区别在性能或语法,见下面的例子:
.filter ()
其中()
瓦尔filtered_df=df。过滤器(“id > 1”)瓦尔filtered_df=df。在哪里(“id > 1”)
使用过滤选择一个子集的行返回DataFrame或修改。
您可以选择通过一个或多个列列名称.select (),比如下面的例子:
.select ()
瓦尔select_df=df。选择(“id”,“名称”)
您可以组合选择和过滤查询来限制返回的行和列。
subset_df=df。过滤器(“id > 1”)。选择(“名称”)
查看这些数据以表格格式,您可以使用砖显示()下面的示例命令,如:
显示()
显示(df)
火花使用术语模式引用列的名称和数据类型DataFrame。
请注意
砖也使用术语“模式”来描述表登记目录的集合。
你可以打印使用的模式.printSchema ()方法,如以下示例:
.printSchema ()
df。printSchema()
砖使用三角洲湖默认所有表。您可以保存的内容DataFrame表使用下面的语法:
df。写。toTable(“< table_name >”)
大多数火花应用程序被设计成工作在大型数据集和工作在一个分布式的方式,并引发写出一个目录的文件,而不是单个文件。许多数据系统配置为读取这些文件的目录。砖推荐使用的表在filepaths对于大多数应用程序。
下面的示例JSON文件的保存目录:
df。写。格式(“json”)。保存(“/ tmp / json_data”)
火花DataFrames提供一个选项来将SQL与Scala。
的selectExpr ()方法允许您指定每一列作为一个SQL查询,比如下面的例子:
selectExpr ()
显示(df。selectExpr(“id”,“上(名称)作为big_name”))
您可以导入expr ()函数pyspark.sql.functions使用SQL语法一列将被指定的任何地方,如以下示例:
expr ()
pyspark.sql.functions
进口org。apache。火花。sql。功能。expr显示(df。选择(的id,expr(“低(名称)作为little_name”)))
您还可以使用spark.sql ()在Scala内核运行任意SQL查询,如以下示例:
spark.sql ()
瓦尔query_df=火花。sql(“从< table_name > SELECT *”)
因为Scala执行逻辑内核和所有SQL查询是作为string传递的,您可以使用Scala格式化参数化SQL查询,如以下示例:
瓦尔table_name=“my_table”瓦尔query_df=火花。sql(“SELECT *美元table_name”)
这是一个笔记本向您展示如何使用数据集聚合器。
在新标签页打开笔记本