gpt4 book ai didi

r - Spark Dataframe 中的重复列

转载 作者:可可西里 更新时间:2023-11-01 14:16:20 26 4
gpt4 key购买 nike

我在 hadoop 集群中有一个 10GB 的 csv 文件,其中包含重复的列。我尝试在 SparkR 中对其进行分析,因此我使用 spark-csv 包将其解析为 DataFrame:

  df <- read.df(
sqlContext,
FILE_PATH,
source = "com.databricks.spark.csv",
header = "true",
mode = "DROPMALFORMED"
)

但是由于 df 有重复的 Email 列,如果我想选择这一列,它会出错:

select(df, 'Email')

15/11/19 15:41:58 ERROR RBackendHandler: select on 1422 failed
Error in invokeJava(isStatic = FALSE, objId$id, methodName, ...) :
org.apache.spark.sql.AnalysisException: Reference 'Email' is ambiguous, could be: Email#350, Email#361.;
at org.apache.spark.sql.catalyst.plans.logical.LogicalPlan.resolve(LogicalPlan.scala:278)
...

我想保留第一次出现的 Email 列并删除后者,我该怎么做?

最佳答案

最好的方法是更改​​上游的列名称;)

然而,这似乎是不可能的,所以有几个选择:

  1. 如果列的大小写不同(“电子邮件”与“电子邮件”),您可以启用区分大小写:

         sql(sqlContext, "set spark.sql.caseSensitive=true")
  2. 如果列名完全相同,您将需要手动指定架构并跳过第一行以避免标题:

    customSchema <- structType(
    structField("year", "integer"),
    structField("make", "string"),
    structField("model", "string"),
    structField("comment", "string"),
    structField("blank", "string"))

    df <- read.df(sqlContext, "cars.csv", source = "com.databricks.spark.csv", header="true", schema = customSchema)

关于r - Spark Dataframe 中的重复列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33816481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com