【问题标题】:Empty value imputation in Spark using Scala使用 Scala 在 Spark 中进行空值插补
【发布时间】:2019-07-09 09:36:30
【问题描述】:

我正在尝试通过 NA 估算空值,并且代码仅使用 Scala 可以正常工作,但是当我在 Spark 中运行代码时它无法正常工作

/* first way:- */
def blankImputation(input: String): String = {
    val pattern2 =  """(^.*?,,+.*$)""".r;
    if (pattern2.findFirstIn(input).contains(",,")) {
        return pattern2.replaceAllIn(input, ",NA,");
    }
    return input;
}

var cleaned_df = inputFile.map(blankImputation)


/* second way:- */
def blankImputation(input: String): String = {
    val pattern2 =  """(^.*?,,+.*$)""".r;
    if (input.isEmpty()) {
        return "NA";
    }
    return input;
}

var cleaned_df = inputFile.map(blankImputation)
cleaned_df.toDF().collect()

我希望 NA 而不是 Empty 值。

【问题讨论】:

  • spark 没用的,出现什么错误,怎么用的可以分享一下吗?
  • 我没有收到任何错误,但它没有估算连续的单引号。这是我的代码:- var clean_df = inputFile.map(blankImputation) 我试图将行作为键并进行空值插补。
  • 这里的inputFile是什么,怎么读的?
  • 输入文件是csv,我只是把它读入rdd:- val inputFile = sc.textFile("test/cust_details.csv")
  • 如果你有一个 csv 文件,为什么不把 csv 读成数据框呢? as spark.read.csv(csv).na.fill("NA") 这将把你所有的空值替换为NA

标签: scala apache-spark feature-engineering


【解决方案1】:

感谢尚卡尔的努力。遵循以下步骤后,我可以估算缺失值:- 1. 我将 csv 文件加载到数据框中。 2. 加载到数据框后,空值被 null 替换,所以我使用以下代码估算空值:

val nullReplacer = udf((x: String) => { if (x == null) "N" else x })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 2018-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-07-13
    • 2017-01-28
    • 2021-12-14
    相关资源
    最近更新 更多