这当然是一个非常愚蠢的问题,但我确实花了一些时间,却找不到。
我正在使用pyspark读取csv文件,由于我的浮动分隔符是“,”,因此会产生错误。
在将其替换为字符串之前,我想验证是否没有选项来指定它(类似.option(“ floatingDecimal”,“,”)),但是我找不到可用的任何完整列表选项。许多教程给出了一些但没有完成的内容。 是否存在? 谢谢
答案 0 :(得分:2)
In the official documentation of the DataFrameReader.csv
:
您可以设置以下特定于CSV的选项来处理CSV文件:
- sep(默认为):将单个字符设置为每个字段和值的分隔符。
- 编码(默认为UTF-8):按给定的编码类型对CSV文件进行解码。
- quote(默认值“):设置用于转义带引号的值的单个字符,其中分隔符可以是值的一部分。如果要关闭引号,则需要设置的不是空值,而是一个空字符串。格式与com.databricks.spark.csv不同。
- 转义(默认值):设置用于在已加引号的值内转义引号的单个字符。
- 注释(默认为空字符串):设置用于跳过以该字符开头的行的单个字符。默认情况下,它是禁用的。
- 标题(默认为false):使用第一行作为列名。
- inferSchema(默认为false):从数据自动推断输入模式。它需要对数据进行一次额外的传递。
- ignoreLeadingWhiteSpace(默认为false):定义是否应跳过正在读取的值中的前导空白。
- ignoreTrailingWhiteSpace(默认为false):定义是否应跳过正在读取的值的尾随空白。
- nullValue(默认为空字符串):设置null值的字符串表示形式。
- nanValue(默认为NaN):设置非数字”值的字符串表示形式。
- positiveInf(默认Inf):设置正无穷大值的字符串表示形式。
- negativeInf(默认为-Inf):设置负无穷大值的字符串表示形式。
- dateFormat(默认为null):设置指示日期格式的字符串。自定义日期格式遵循java.text.SimpleDateFormat的格式。这适用于日期类型和时间戳类型。默认情况下,它为null,这意味着尝试通过java.sql.Timestamp.valueOf()和java.sql.Date.valueOf()解析时间和日期。
- maxColumns(默认值为20480):定义记录可以具有多少列的硬限制。
- maxCharsPerColumn(默认值为1000000):定义了读取任何给定值所允许的最大字符数。
- maxMalformedLogPerPartition(默认值为10):设置Spark将为每个分区记录的格式错误的最大行数。超出此数字的格式错误的记录将被忽略。
- 模式(默认为PERMISSIVE):允许在解析过程中处理损坏的记录的模式。
- PERMISSIVE:当遇到损坏的记录时,将其他字段设置为null。用户设置模式后,它将为其他字段设置null。
- DROPMALFORMED:忽略整个损坏的记录。
- FAILFAST:遇到损坏的记录时引发异常。