python—验证字段值的有效方法

56lgkhnf  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(276)

在将数据保存到hdfs之前,我需要验证Dataframe中的某些列。我想知道在pyspark 1.5.2/python2.7中是否有一种优雅而有效的方法来实现这一点
例如,假设我有以下数据

+-----+---+
|    a|  b|
+-----+---+
|"foo"|123|
+-----+---+

我要确保列的每个值 a 不超过3个字符和列 b<= 500 .
我目前的想法是编写一个udf,它执行一个简单的if/else,并返回某个值,然后根据这些结果决定是否失败。然而,对于很多数据,我担心它的处理速度会很慢,或者至少会非常繁重。在spark中是否已经有了一种行之有效的方法?或者有什么流行的策略吗?我自己也没能找到多少关于这个问题的信息。
我也愿意避免Spark,如果有更好的方法,任何好的建议都会很有帮助。

vxqlmq5t

vxqlmq5t1#

您可以使用几个预定义的函数来实现您的目标。

from pyspark.sql.functions import *

df = sc.parallelize([("fo", 100),("alb", 501),("roger", -10),("francis", 1000)]).toDF(["name", "salary"])

df.select("*", ((length("name") < lit(3)) & (col("salary") <= lit(500))).alias("evaluation")).show()

+-------+------+----------+
|   name|salary|evaluation|
+-------+------+----------+
|     fo|   100|      true|
|    alb|   501|     false|
|  roger|   -10|     false|
|francis|  1000|     false|
+-------+------+----------+

相关问题