CSV文件
本文提供了示例阅读和写作与砖使用Python的CSV文件,Scala, R, SQL。
与畸形的CSV记录工作
当阅读CSV文件指定的模式,可能是文件中的数据不匹配的模式。例如,字段包含城市名称不解析为一个整数。结果取决于解析器运行的模式:
宽容的
(默认):null插入字段,不能正确解析DROPMALFORMED
:滴线包含字段不能被解析FAILFAST
:中止阅读如果发现任何畸形数据
设置模式,使用模式
选择。
diamonds_df=(火花。读。格式(“csv”)。选项(“模式”,“宽容”)。负载(“/ databricks-datasets / Rdatasets /数据- 001 / csv / ggplot2 / diamonds.csv”))
在宽容的
模式可以检查行不能正确解析使用下列方法之一:
您可以提供一个自定义的路径选择
badRecordsPath
记录腐败记录到一个文件。您可以添加列
_corrupt_record
模式提供给DataFrameReader审查合成DataFrame腐败记录。
获救的数据列
请注意
该特性支持砖运行时的8.3(不支持)及以上。
当使用宽容的
模式,您可以启用获救的数据列捕捉任何数据,没有解析,因为一个或多个字段的记录有以下问题:
缺席所提供的模式。
不匹配的数据类型提供了模式。
有一个情况不匹配的字段名称提供模式。
获救的数据列返回一个JSON文档,其中包含的列已经获救,和源文件路径的记录(源文件路径可以在砖运行时8.3及以上)。删除源文件路径从获救的数据列,您可以设置SQL配置spark.conf.set (“spark.databricks.sql.rescuedDataColumn.filePath.enabled”,“假”)
。您可以通过设置启用获救的数据列选项rescuedDataColumn
列名在读取数据时,如_rescued_data
与spark.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。