CSV文件

本文提供了示例阅读和写作与砖使用Python的CSV文件,Scala, R, SQL。

请注意

您可以使用SQL来读取CSV数据直接或通过使用一个临时视图。砖建议使用一个临时视图。直接阅读CSV文件有以下缺点:

选项

你可以为CSV文件数据源配置几个选项。看到下面的Apache火花参考文章支持读写选项。

与畸形的CSV记录工作

当阅读CSV文件指定的模式,可能是文件中的数据不匹配的模式。例如,字段包含城市名称不解析为一个整数。结果取决于解析器运行的模式:

  • 宽容的(默认):null插入字段,不能正确解析

  • DROPMALFORMED:滴线包含字段不能被解析

  • FAILFAST:中止阅读如果发现任何畸形数据

设置模式,使用模式选择。

diamonds_df=(火花格式(“csv”)选项(“模式”,“宽容”)负载(“/ databricks-datasets / Rdatasets /数据- 001 / csv / ggplot2 / diamonds.csv”))

宽容的模式可以检查行不能正确解析使用下列方法之一:

  • 您可以提供一个自定义的路径选择badRecordsPath记录腐败记录到一个文件。

  • 您可以添加列_corrupt_record模式提供给DataFrameReader审查合成DataFrame腐败记录。

请注意

badRecordsPath选择优先于_corrupt_record,这意味着畸形行写入路径没有出现在合成DataFrame提供。

畸形的默认行为记录变更时使用获救的数据列

发现畸形行笔记本

在新标签页打开笔记本

获救的数据列

请注意

该特性支持砖运行时的8.3(不支持)及以上。

当使用宽容的模式,您可以启用获救的数据列捕捉任何数据,没有解析,因为一个或多个字段的记录有以下问题:

  • 缺席所提供的模式。

  • 不匹配的数据类型提供了模式。

  • 有一个情况不匹配的字段名称提供模式。

获救的数据列返回一个JSON文档,其中包含的列已经获救,和源文件路径的记录(源文件路径可以在砖运行时8.3及以上)。删除源文件路径从获救的数据列,您可以设置SQL配置spark.conf.set (“spark.databricks.sql.rescuedDataColumn.filePath.enabled”,“假”)。您可以通过设置启用获救的数据列选项rescuedDataColumn列名在读取数据时,如_rescued_dataspark.read.option (“rescuedDataColumn”,“_rescued_data”) .format (csv) .load(<路径>)

当解析CSV解析器支持三种模式记录:宽容的,DROPMALFORMED,FAILFAST。一起使用时rescuedDataColumn、数据类型不匹配不导致记录被删除DROPMALFORMED模式或抛出一个错误FAILFAST模式。腐败的记录是,不完整或畸形CSV-are下降或抛出错误。

rescuedDataColumn被用在宽容的模式,适用于以下规则腐败的记录:

  • 文件的第一行(标题行或数据行)设置预期行长度。

  • 一行有不同的列数是不完整的。

  • 数据类型不匹配不被认为是腐败的记录。

  • 只有不完整的和畸形的CSV记录被认为是腐败和记录_corrupt_record列或badRecordsPath

例如:在任何语言阅读文件

这和下面的笔记本使用的例子钻石的数据集。指定的路径数据集以及任何您希望的选项。

这个笔记本显示如何读取一个文件,显示样本数据,并打印数据模式使用Scala, R, Python和SQL。

读CSV文件的笔记本

在新标签页打开笔记本

例如:指定模式

CSV文件的模式时,您可以指定到CSV读者所需的模式模式选择。

阅读笔记本CSV文件模式

在新标签页打开笔记本

例如:陷阱的阅读列的一个子集

CSV的解析器的行为取决于读取的列集。如果指定的模式是不正确的,结果可能差别很大取决于访问列的子集。以下笔记本礼物最常见的陷阱。

说明阅读的列一个CSV文件的笔记本的一个子集

在新标签页打开笔记本