← 返回首页
SaveMode和内置函数
发表时间:2023-10-25 03:02:54
SaveMode

Spark SQL对于save操作,提供了不同的save mode。主要用来处理,当目标位置已经有数据时应该如何处理。save操作不会执行锁操作,并且也不是原子的,因此是有一定风险出现脏数据的。

1.SaveMode

Spark SQL对于save操作,提供了不同的save mode。主要用来处理,当目标位置已经有数据时应该如何处理。save操作不会执行锁操作,并且也不是原子的,因此是有一定风险出现脏数据的。

SaveMode                            解释
SaveMode.ErrorIfExists (默认)                 如果目标位置已经存在数据,那么抛出一个异常
SaveMode.Append                 如果目标位置已经存在数据,那么将数据追加进去
SaveMode.Overwrite              如果目标位置已经存在数据,那么就将已经存在的数据删除,用新数据进行覆盖
SaveMode.Ignore                 如果目标位置已经存在数据,那么就忽略,不做任何操作

在LoadAndSaveOpScala中增加SaveMode的设置,重新执行,验证结果。将SaveMode设置为Append,如果目标已存在,则为追加。

stuDf.select("name","age","gender")
  .write
  .format("csv")
  .mode(SaveMode.Append)//追加
  .save("hdfs://master:9000/out-save001")

2.内置函数

Spark中提供了很多内置的函数。

种类              函数
聚合函数                   avg, count, countDistinct, first, last, max, mean, min, sum, sumDistinct
集合函数                   array_contains, explode, size
日期/时间函数                datediff, date_add, date_sub, add_months, last_day, next_day, months_between, current_date, current_timestamp, date_format
数学函数                   abs, ceil, floor, round
混合函数                   if, isnull, md5, not, rand, when
字符串函数              concat, get_json_object, length, reverse, split, upper
窗口函数                   denseRank, rank, rowNumber

其实这里面的函数和hive中的函数用法类似,由于SparkSQL中的SQL函数文档不全,其实在使用这些函数的时候,大家完全可以去查看hive中sql的文档,使用的时候都是一样的。