dataframe 空值替换为0_Spark 3.0—简而言之的新功能

7cea7a7ccbf7a6dfebee09f54777781d.png

最近,Apache Spark社区发布了Spark 3.0的预览版,该预览版包含许多重要的新功能,这些功能将帮助Spark创造强大的影响力,在此大数据和数据科学时代,该产品已拥有广泛的企业用户和开发人员。

在新版本中,Spark社区已将一些功能从Spark SQL移植到了编程的Scala API(org.apache.spark.sql.functions),这鼓励开发人员直接将此功能用作其DataFrame转换的一部分,而不是直接输入 进入SQL模式或创建视图,并使用此函数以及SQL表达式或callUDF函数。

社区还辛苦地引入了一些新的数据转换功能和partition_transforms函数,这些功能在与Spark的新DataFrameWriterv2一起使用以将数据写到某些外部存储时非常有用。

Spark 3中的一些新功能已经是Databricks Spark以前版本的一部分。 因此,如果您在Databricks云中工作,您可能会发现其中一些熟悉的功能。

本文通篇介绍了Spark SQL和Scala API中用于DataFrame操作访问的Spark新功能,以及从Spark SQL移植到Scala API以进行编程访问的功能。

Spark SQL中的Spark 3.0中引入的功能以及用于DataFrame转换的功能

from_csv

像from_json一样,此函数解析包含CSV字符串的列,并将其转换为Struct类型。 如果CSV字符串不可解析,则将返回null。

例:

该函数需要一个Struct模式和一些选项,这些模式和选项指示如何解析CSV字符串。 选项与CSV数据源相同。

val studentInfo = "1,Jerin,CSE"::"2,Jerlin,ECE"::"3,Arun,CSE"::Nilval schema = new StructType()             .add("Id",IntegerType)            .add("Name",StringType)            .add("Dept",StringType)val options = Map("delimiter" ->",")val studentDF = studentInfo.toDF("Student_Info").withColumn("csv_struct",from_csv('Student_Info, schema,options))studentDF.show()

to_csv

要将"结构类型"列转换为CSV字符串。

例:

与Struct type列一起,此函数还接受可选的options参数,该参数指示如何将Struct列转换为CSV字符串。

studentDF.withColumn("csv_string",to_csv($"csv_struct",Map.empty[String, String].asJava)).show

推断CSV字符串的模式,并以DDL格式返回模式。

例:

该函数需要一个CSV字符串列和一个可选参数,其中包含如何解析CSV字符串的选项。

studentDF  .withColumn("schema",schema_of_csv("csv_string"))  .show

for_all

将给定谓词应用于数组中的所有元素,并且仅当数组中的所有元素求值为true时返回true,否则返回false。

例:

检查给定Array列中的所有元素是否均是偶数。

val  df = Seq(Seq(2,4,6),Seq(5,10,3)).toDF("int_array")df.withColumn("flag",forall($"int_array",(x:Column)=>(lit(x%2==0)))).show
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值