from_json函数

适用于:检查标记是的砖的SQL检查标记是的砖运行时

返回一个结构体的价值jsonStr模式

语法

from_json(jsonStr,模式(,选项])

参数

  • jsonStr指定一个json文档:一个字符串表达式。

  • 模式:一个字符串表达式或调用schema_of_json函数

  • 选项:一个可选的地图<字符串,字符串>文字指定指令。

之前砖12.2运行时模式必须是文字。

返回

一个结构体字段名称和类型匹配的模式定义。

jsonStr应该是格式良好的对吗模式选项模式必须定义为逗号分隔列名称和数据类型对用于例如创建

选项如果提供,可以有下列:

  • primitivesAsString(默认):推断所有原始值作为字符串类型。

  • prefersDecimal(默认):推断所有浮点值作为一个十进制类型。如果在十进制值不符合,那么它推断双打。

  • allowComments(默认):忽略了Java和c++风格的评论在JSON记录。

  • allowUnquotedFieldNames(默认):允许非挂牌JSON字段名称。

  • allowSingleQuotes(默认真正的):允许单引号除了双引号。

  • allowNumericLeadingZeros(默认):允许前导零的数字(例如,00012年)。

  • allowBackslashEscapingAnyCharacter(默认):允许接受所有使用反斜杠字符引用的引用机制。

  • allowUnquotedControlChars(默认):JSON字符串可以包含非挂牌控制字符(ASCII字符值小于32,包括选项卡并换行字符)。

  • 模式(默认宽容的):允许一个模式来处理腐败记录在解析。

    • 宽容的开会时:一个损坏的记录,把畸形的字符串字段进行配置columnNameOfCorruptRecord,畸形的字段设置为null。继续腐败记录,您可以设置一个字符串类型字段命名columnNameOfCorruptRecord在一个用户定义的模式。如果一个模式没有字段,它滴腐败在解析记录。推断一个模式时,隐式地添加一个columnNameOfCorruptRecord在一个输出模式。

    • FAILFAST:开会时将抛出一个异常损坏的记录。

  • columnNameOfCorruptRecord(缺省为指定的值spark.sql.columnNameOfCorruptRecord):允许重命名新领域有畸形的字符串创建的宽容的模式。这将覆盖spark.sql.columnNameOfCorruptRecord

  • dateFormat(默认yyyy-MM-dd):集表示日期格式的字符串。自定义日期格式按照格式Datetime模式。这适用于日期类型。

  • timestampFormat(默认yyyy-MM-dd 'HH: mm: ss [.SSS] [XXX]):设置显示时间戳格式的字符串。自定义日期格式按照格式Datetime模式。这适用于时间戳的类型。

  • 多行(默认):解析一个记录,这可能跨越多个行,每个文件。

  • 编码(默认情况下不设置):允许强行设置一个标准基本或扩展编码的JSON文件。例如UTF-16BE UTF-32LE。如果没有指定的编码多行被设置为真正的,它是自动检测。

  • lineSep(默认覆盖所有r \,\ r \ n\ n):定义行分隔符应该用于解析。

  • samplingRatio1.0(默认):定义的输入使用JSON对象模式推断。

  • dropFieldIfAllNull(默认):是否要忽略所有空值的列或空数组/结构体在模式推理。

  • 语言环境(默认是en - us):区域作为语言标签在IETF BCP 47格式。例如,这是使用在解析日期和时间戳。

  • allowNonNumericNumbers(默认真正的):JSON解析器可以识别组不是一个数字()令牌作为合法的浮点数值:

    • +正+∞的别名+∞

    • 负无穷大),别名

    • 等其他not-a-numbers,除零的结果。

例子

>选择from_json (' {“a”: 1、“b”: 0.8}”,“一个INT, b双”);{0.8}>选择from_json('{“时间”:“26/08/2015”}’,“时间戳”,地图(' timestampFormat ', ' dd / MM / yyyy '));{2015-08-26就是}