【问题标题】:Effective Way to Validate Field Values Spark验证字段值的有效方法 Spark
【发布时间】:2016-08-12 21:30:19
【问题描述】:

在将数据保存到 hdfs 之前,我需要验证数据框中的某些列。我想知道在 pyspark 1.5.2 / python 2.7 中是否有一种优雅而有效的方法来做到这一点

例如,假设我有以下数据

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

我想确保 a 列的每个值不超过 3 个字符,b 列的每个值都是 <= 500

我目前的想法是编写一个执行简单 if/else 的 udf,并返回某个值,然后根据这些结果决定是否失败。但是,对于很多数据,我担心它会很慢或至少处理非常繁重。是否已经有一种完善的方法可以在 spark 中执行此操作?或者有什么流行的策略来做到这一点?我自己无法找到有关该主题的太多信息。

如果有更好的方法,我也愿意避免火花,任何好的建议都会非常有帮助。

【问题讨论】:

    标签: python hadoop apache-spark pyspark bigdata


    【解决方案1】:

    您可以使用多个预定义的functions 来实现您的目标。

    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|
    +-------+------+----------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 2022-07-15
      • 1970-01-01
      • 2012-03-13
      • 2018-02-11
      • 2016-03-15
      相关资源
      最近更新 更多