• csvStr :指定 CSV 数据行的字符串表达式。
  • schema schema_of_csv 函数的字符串字面量或调用。
  • options :指定指令的可选 MAP<STRING,STRING> 字面量。
  • 一个结构,其字段名称和类型与架构定义匹配。

    csvStr schema options 方面应格式正确。 schema 必须定义为逗号分隔的列名称和数据类型对(例如如同在 CREATE TABLE 中使用一样)。

    如果提供, options 可以是下列任何内容:

  • sep (默认值为 , ):为每个字段和值设置分隔符。 此分隔符可以是一个或多个字符。
  • encoding (默认值为 UTF-8):按照指定编码类型对 CSV 文件进行解码。
  • quote (默认值为 " ):设置单个字符,用于转义带引号值,其中分隔符可以是值的一部分。 如果要关闭引用,则需要设置不为 null,但是为空字符串。 此行为与 com.databricks.spark.csv 不同。
  • escape (默认值为 \ ):设置单个字符,用于在带引号值内转义引号。
  • charToEscapeQuoteEscaping (默认值为 escape \0 ):设置单个字符,用于转义引号字符的转义。 当 escape quote 字符不同时,默认值为转义字符,否则为 \0
  • comment (默认值为空字符串):设置单个字符,用于跳过以此字符开头的行。 默认禁用此项。
  • 标头(默认值为 false ):使用第一行作为列的名称。
  • enforceSchema (默认值为 true ):如果设置为 true,则会将指定或推断的架构强制应用于数据源文件,并且会忽略 CSV 文件中的标头。 如果该选项设置为 false,则在标头选项设置为 true 时,会按照 CSV 文件中的所有标头验证架构。 架构中的字段名称和 CSV 标头中的列名会按照其位置进行检查(需考虑 spark.sql.caseSensitive )。 尽管默认值为 true,但建议禁用 enforceSchema 选项以避免错误的结果。
  • inferSchema (默认值为 false ):从数据自动推断输入架构。 它需要对数据进行一次额外传递。
  • samplingRatio (默认值为 1.0):定义用于架构推断的行的比例。
  • ignoreLeadingWhiteSpace (默认值为 false ):一个标志,指示是否应跳过所读取的值中的前导空格。
  • ignoreTrailingWhiteSpace (默认值为 false ):一个标志,指示是否应跳过所读取的值中的尾随空格。
  • nullValue (默认值为空字符串):设置 null 值的字符串表示形式。
  • emptyValue (默认值为空字符串):设置空值的字符串表示形式。
  • nanValue (默认值为 NaN ):设置非数字值的字符串表示形式。
  • positiveInf (默认值为 Inf ):设置正无穷大值的字符串表示形式。
  • negativeInf (默认值为 -Inf) ):设置负无穷大值的字符串表示形式。
  • dateFormat (默认值为 yyyy-MM-dd ):设置指示日期格式的字符串。 自定义日期格式遵循 日期/时间模式 中的格式。 这适用于日期类型。
  • timestampFormat (默认值为 yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] ):设置指示时间戳格式的字符串。 自定义日期格式遵循 日期/时间模式 中的格式。 这适用于时间戳类型。
  • maxColumns (默认值为 20480 ):定义记录可以包含的列数的硬限制。
  • maxCharsPerColumn (默认值为 -1):定义所读取的任何指定值允许的最大字符数。 默认情况下,它为 -1,表示长度无限
  • unescapedQuoteHandling (默认值为 STOP_AT_DELIMITER ):定义 CSV 分析程序如何处理具有未转义引号的值。
  • STOP_AT_CLOSING_QUOTE :如果在输入中找到了未转义引号,则会累积引号字符并继续将值解析为带引号值,直到找到右引号。
  • BACK_TO_DELIMITER :如果在输入中找到了未转义引号,则将该值视为无引号值。 这会使分析程序累积当前所分析值的所有字符,直到找到分隔符。 如果在值中找不到分隔符,则分析程序会继续从输入中累积字符,直到找到分隔符或行尾。
  • STOP_AT_DELIMITER :如果在输入中找到了未转义引号,则将该值视为无引号值。 这会使分析程序累积所有字符,直到在输入中找到分隔符或行尾。
  • STOP_AT_DELIMITER :如果在输入中找到了未转义引号,则会跳过为指定值分析的内容,而是改为生成 nullValue 中设置的值。
  • RAISE_ERROR :如果在输入中找到了未转义引号,则会引发 TextParsingException
  • mode (默认值为 PERMISSIVE ):允许采用在分析期间处理损坏记录的模式。 它支持以下不区分大小写的模式。 Spark 尝试在删除列时仅分析 CSV 中的必需列。 因此,根据必需字段集,损坏的记录可能会有所不同。 此行为可以通过 spark.sql.csv.parser.columnPruning.enabled 进行控制(默认情况下启用)。
  • PERMISSIVE :遇到损坏的记录时,将格式错误的字符串放入由 columnNameOfCorruptRecord 配置的字段中,并将格式错误的字段设置为 null。 若要保留损坏的记录,用户可以在用户定义的架构中设置名为 columnNameOfCorruptRecord 的字符串类型字段。 如果架构没有该字段,则会在分析期间删除损坏的记录。 标记比架构更少或更多的记录不是 CSV 的损坏记录。 当它遇到标记少于架构长度的记录时,会将 null 设置为额外字段。 当记录的标记多于架构的长度时,会删除额外标记。
  • FAILFAST :遇到损坏的记录时引发异常。
  • columnNameOfCorruptRecord (默认值为 spark.sql.columnNameOfCorruptRecord 中指定的值):允许重命名通过 PERMISSIVE 模式创建的包含格式错误字符串的新字段。 这会替代 spark.sql.columnNameOfCorruptRecord
  • multiLine (默认值为 false ):分析一个记录,该记录可能跨多行。
  • locale (默认值为 en-US ):将区域设置设置为 IETF BCP 47 格式的语言标记。 例如,这会在分析日期和时间戳时进行使用。
  • lineSep (默认值涵盖所有 \r \r\n \n ):定义应该用于分析的行分隔符。 最大长度为 1 个字符。
  • pathGlobFilter :可选的 glob 模式,用于仅包含路径与模式匹配的文件。 语法遵循 org.apache.hadoop.fs.GlobFilter 。 它不会更改分区发现的行为。
  • > SELECT from_csv('1, 0.8', 'a INT, b DOUBLE');
     {1,0.8}
    > SELECT from_csv('26/08/2015', 'time Timestamp', map('timestampFormat', 'dd/MM/yyyy'));
     {"time":2015-08-26 00:00:00}
    
  • from_json 函数
  • schema_of_json 函数
  • schema_of_csv 函数
  • to_json 函数
  • to_csv 函数
  •