【发布时间】:2017-04-24 12:26:46
【问题描述】:
我正在尝试使用 CSV 加载数据框,但出现此错误:
Reference 'data' is ambiguous
我在阅读时定义了架构,但可能是因为 CSV 中的数据包含带有逗号的描述,架构显示了 2 个新列,称为“数据”:
root
|-- CD_SK_PRODUTO_ATG: string (nullable = true)
|-- CD_VENDA_PRODUTO: string (nullable = true)
|-- CD_VENDA_REFIL: string (nullable = true)
|-- NO_PRODUTO: string (nullable = true)
|-- ID_REFIL: string (nullable = true)
|-- DC_RECOMENDACAO_PUBLICO: string (nullable = true)
|-- DC_USO: string (nullable = true)
|-- NO_LINHA_PRODUTO: string (nullable = true)
|-- CD_CONTEXTO: string (nullable = true)
|-- DT_ULTIMA_ATUALIZACAO: string (nullable = true)
|-- CD_USUARIO_ATUALIZACAO: string (nullable = true)
|-- SG_PAIS: string (nullable = true)
|-- data: date (nullable = true)
|-- data: date (nullable = true)
由于 2 个新列具有相同的名称,我无法对 Dataframe 执行任何操作。我尝试删除带有df.drop() 的列,仅选择带有df.select() 的几列,使用df.limit(1) 限制结果,读取时推断架构...
但错误Reference 'data' is ambiguous 仍然出现。
谁有线索?
【问题讨论】:
-
您检查过这些字段的来源
csv文件吗? -
CSV 有 12 列。但是当我尝试在 excel 中打开它时,我猜是因为 cmets 中有逗号,所以有几列会错位。不幸的是,生成 CSV 时我无权访问,因此我可以用双引号修复列。我正在寻找某种功能,例如“dropErrors”
-
你不能在文本编辑器中打开它吗?
-
DROPMALFORMED在读取 csv 文件时会忽略整个损坏的记录。 -
我认为您可以使用 sc.textfile 将您的 csv 作为 RDD[String] 读取,然后从您的 csv 中删除错误,最终将 rdd 转换为数据帧
标签: python csv apache-spark pyspark spark-dataframe