替换'会导致删除吗?

编程入门 行业动态 更新时间:2024-10-26 10:36:50
本文介绍了替换'会导致删除吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

在此命令(taken from)中,replaceWhere是否会导致删除记录? 命令中提到的日期范围有1000行。新的东风只有100家。这是否会导致删除900条记录?

df.write .format("delta") .mode("overwrite") .option("replaceWhere", "date >= '2017-01-01' AND date <= '2017-01-31'") .save("/mnt/delta/events") 推荐答案

此选项的工作方式与动态覆盖分区几乎相同,基本上您是在告诉Spark只覆盖那些范围分区上的数据。此外,只有当您的数据帧与条件replaceWhere匹配时,才会保存数据,否则,如果一行不匹配,将抛出异常Data written out does not match replaceWhere。

Q: Would this cause a deletion of 900 records? A: Yes, it would delete.

我测试了如何创建一个包含2列的数据帧

root |-- number: long (nullable = true) |-- even: integer (nullable = true)

第一次运行将节省1000行,其中500行为偶数行,500行为奇数行:

rows = [Row(number=i) for i in range(0, 1000)] df = spark.createDataFrame(rows) df = df.withColumn('even', (f.col('number') % 2 == f.lit(0)).cast('int')) (df .write .partitionBy('even') .format('delta') .saveAsTable('my_delta_table'))

第二次运行将只过滤偶数行并覆盖分区whereeven=1:

rows = [Row(number=i) for i in range(0, 10)] df_only_even = spark.createDataFrame(rows) df_only_even = df_only_even.withColumn('even', (f.col('number') % 2 == f.lit(0)).cast('int')) # It is required to filter your dataframe or will throw an error during write operation df_only_even = df_only_even.where(f.col('even') == f.lit(1)) (df_only_even .write .partitionBy('even') .format('delta') .option('replaceWhere', 'even == 1') .mode('overwrite') .saveAsTable('my_delta_table'))

结果

我的表my_delta_table有505行,其中500是奇数,5是偶数:

更多推荐

替换&#39;会导致删除吗?

本文发布于:2023-10-18 11:33:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1504109.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:amp

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!