JSON文件
火花SQL可以自动推断出一个JSON数据集的模式和加载它数据集(行)
。这种转换可以使用SparkSession.read.json ()
在一个数据集(字符串)
或一个JSON文件。
注意,提供的文件json文件不是一个典型的JSON文件。必须包含一个单独的,每一行包含有效的JSON对象。有关更多信息,请参阅JSON文本格式,也称为用JSON。
常规多行JSON文件,设置多行
选项真正的
。
/ /原始类型(整数、字符串等)和产品类型(case类)编码器/ /支持通过导入这在创建一个数据集。进口spark.implicits._/ /一个JSON数据集所指出的道路。/ /路径可以是一个文本文件或目录存储文本文件瓦尔路径=“例子/ src / main /资源/ people.json”瓦尔peopleDF=火花。读。json(路径)/ /推断模式可以使用的可视化printSchema()方法peopleDF。printSchema()/ /根/ / |——年龄:长(可空= true)/ / |——名称:字符串(nullable = true)/ /创建一个临时使用DataFrame视图peopleDF。createOrReplaceTempView(“人”)/ / SQL语句可以通过使用SQL运行方法提供的火花瓦尔teenagerNamesDF=火花。sql(“选择的名字从13至19岁”的人)teenagerNamesDF。显示()/ / + - - - +/ / | |名称/ / + - - - +/ / |贾斯汀|/ / + - - - +/ /另外,DataFrame可以创建一个JSON数据集表示/ /数据集[String]存储每个字符串一个JSON对象瓦尔otherPeopleDataset=火花。createDataset(”““{”名称”:“阴”、“地址”:{“城市”:“哥伦布”,“状态”:“俄亥俄”}}“”“::零)瓦尔其他人=火花。读。json(otherPeopleDataset)其他人。显示()/ / + - - - - - - - - - - - - - - - + - - - +/ / | | |地址的名字/ / + - - - - - - - - - - - - - - - + - - - +/ / | |阴|俄亥俄州哥伦布市/ / + - - - - - - - - - - - - - - - + - - - +
火花SQL可以自动推断出一个JSON数据集的模式和加载它数据集<行>
。这种转换可以使用SparkSession.read () . json ()
在一个数据集<字符串>
或一个JSON文件。
注意,提供的文件json文件不是一个典型的JSON文件。必须包含一个单独的,每一行包含有效的JSON对象。有关更多信息,请参阅JSON文本格式,也称为用JSON。
常规多行JSON文件,设置多行
选项真正的
。
进口org.apache.spark.sql.Dataset;进口org.apache.spark.sql.Row;/ /一个JSON数据集所指出的道路。/ /路径可以是一个文本文件或目录存储文本文件数据集<行>人=火花。读()。json(“例子/ src / main /资源/ people.json”);/ /推断模式可以使用的可视化printSchema()方法人。printSchema();/ /根/ / |——年龄:长(可空= true)/ / |——名称:字符串(nullable = true)/ /创建一个临时使用DataFrame视图人。createOrReplaceTempView(“人”);/ / SQL语句可以通过使用SQL运行方法提供的火花数据集<行>namesDF=火花。sql(“选择的名字从13至19岁”的人);namesDF。显示();/ / + - - - +/ / | |名称/ / + - - - +/ / |贾斯汀|/ / + - - - +/ /另外,DataFrame可以创建一个JSON数据集表示/ /数据集<字符串>存储每个字符串一个JSON对象。列表<字符串>jsonData=数组。asList(“{\“\”:\“阴\”,\“地址\”:{\“\”:\“哥伦布\”,\“\”,\“俄亥俄州\”}}”);数据集<字符串>anotherPeopleDataset=火花。createDataset(jsonData,编码器。字符串());数据集<行>anotherPeople=火花。读()。json(anotherPeopleDataset);anotherPeople。显示();/ / + - - - - - - - - - - - - - - - + - - - +/ / | | |地址的名字/ / + - - - - - - - - - - - - - - - + - - - +/ / | |阴|俄亥俄州哥伦布市/ / + - - - - - - - - - - - - - - - + - - - +
火花SQL可以自动推断出一个JSON数据集的模式和负载DataFrame。这种转换可以使用SparkSession.read.json
JSON文件。
注意,提供的文件json文件不是一个典型的JSON文件。必须包含一个单独的,每一行包含有效的JSON对象。有关更多信息,请参阅JSON文本格式,也称为用JSON。
常规多行JSON文件,设置多行
参数真正的
。
#火花来自前面的示例。sc=火花。sparkContext#一个JSON数据集所指出的道路。#的路径可以是一个文本文件或目录存储文本文件路径=“例子/ src / main /资源/ people.json”peopleDF=火花。读。json(路径)#推断模式可以使用的可视化printSchema()方法peopleDF。printSchema()#根# |——年龄:长(可空= true) # |——名称:字符串(nullable = true)#创建一个临时使用DataFrame视图peopleDF。createOrReplaceTempView(“人”)#可以通过使用SQL方法运行SQL语句提供的火花teenagerNamesDF=火花。sql(“选择的名字从13至19岁”的人)teenagerNamesDF。显示()# + - - - + # | | # + - - - + #名称|贾斯汀| # + - - - +#或者,DataFrame可以创建一个JSON数据集由#一个抽样(字符串)存储每个字符串一个JSON对象jsonStrings=({”名称”:“阴”、“地址”:{“城市”:“哥伦布”,“状态”:“俄亥俄”}}”]otherPeopleRDD=sc。并行化(jsonStrings)其他人=火花。读。json(otherPeopleRDD)其他人。显示()# + - - - - - - - - - - - - - - - - - - - - - - - + # | | |地址名称# + - - - - - - - - - - - - - - - - - - + - - - + # |(俄亥俄州哥伦布市)|阴| # + - - - - - - - - - - - - - - - + - - - +
火花SQL可以自动推断出一个JSON数据集的模式和负载DataFrame。使用read.json ()
函数,它从JSON文件的目录加载数据文件的每一行是一个JSON对象。
注意,提供的文件json文件不是一个典型的JSON文件。必须包含一个单独的,每一行包含有效的JSON对象。有关更多信息,请参阅JSON文本格式,也称为用JSON。
常规多行JSON文件,设置一个命名的参数多行
来真正的
。
#一个JSON数据集所指出的道路。#的路径可以是一个文本文件或目录存储文本文件。路径< -“例子/ src / main /资源/ people.json”#创建一个DataFrame从文件路径(s)指出人< -read.json(路径)#推断模式可以使用的可视化printSchema()方法。printSchema(人)# #根# # |——年龄:长(可空= true)# # |——名称:字符串(nullable = true)#注册这个DataFrame表。createOrReplaceTempView(人,“人”)#可以通过使用SQL运行SQL语句的方法。青少年< -sql(“从人们选择名字,年龄> = 13和年龄< = 19”)头(青少年)# #的名字# # 1贾斯汀
数据源的选择
数据源的JSON可以通过设置选项:
- 的
.option
/.options
的方法DataFrameReader
DataFrameWriter
DataStreamReader
DataStreamWriter
- 下面的内置函数
from_json
to_json
schema_of_json
选项
条款在使用DATA_SOURCE创建表
属性名 | 默认的 | 意义 | 范围 |
---|---|---|---|
时区 |
(价值spark.sql.session.timeZone 配置) |
设置字符串,表明一个时区ID用于格式JSON数据源或分区中的时间戳值。下面的格式时区 支持:
|
读/写 |
primitivesAsString |
假 |
推断所有原始值作为字符串类型。 | 读 |
prefersDecimal |
假 |
推断所有浮点值作为一个十进制类型。如果在十进制值不符合,那么它推断双打。 | 读 |
allowComments |
假 |
忽略Java / c++风格的评论在JSON记录。 | 读 |
allowUnquotedFieldNames |
假 |
允许非挂牌JSON字段名称。 | 读 |
allowSingleQuotes |
真正的 |
允许单引号除了双引号。 | 读 |
allowNumericLeadingZeros |
假 |
允许前导零的数字(如00012)。 | 读 |
allowBackslashEscapingAnyCharacter |
假 |
允许接受所有使用反斜杠字符引用的引用机制。 | 读 |
模式 |
宽容的 |
允许一个模式来处理腐败记录在解析。
|
读 |
columnNameOfCorruptRecord |
(价值spark.sql.columnNameOfCorruptRecord 配置) |
允许重命名新领域有畸形的字符串创建的宽容的 模式。这将覆盖spark.sql.columnNameOfCorruptRecord。 |
读 |
dateFormat |
yyyy-MM-dd |
集表示日期格式的字符串。自定义日期格式按照格式datetime模式。这适用于日期类型。 | 读/写 |
timestampFormat |
yyyy-MM-dd 'HH: mm: ss [.SSS] [XXX] |
设置显示时间戳格式的字符串。自定义日期格式按照格式datetime模式。这适用于时间戳的类型。 | 读/写 |
timestampNTZFormat |
yyyy-MM-dd 'HH: mm: ss (.SSS) | 设置显示没有时区的时间戳格式的字符串。自定义日期格式按照格式Datetime模式。这适用于时间戳没有时区类型,注意zone-offset和时区组件不支持当写作或阅读这些数据类型。 | 读/写 |
enableDateTimeParsingFallback |
如果时间解析器启用政策遗留设置或如果没有自定义日期或时间戳模式提供了。 | 允许向后兼容(火花1回落。x和2.0)解析日期和时间戳的行为如果价值观不匹配模式。 | 读 |
多行 |
假 |
解析一个记录,这可能跨越多个行,每个文件。JSON内置函数忽略该选项。 | 读 |
allowUnquotedControlChars |
假 |
JSON字符串可以包含非挂牌控制字符(ASCII字符值小于32,包括选项卡并换行字符)。 | 读 |
编码 |
时自动检测多行 被设置为真正的 (阅读),utf - 8 (写作) |
阅读,可以强制设置一个标准基本或扩展编码的JSON文件。例如UTF-16BE UTF-32LE。对于写作,指定保存的json文件的编码(字符集)。JSON内置函数忽略该选项。 | 读/写 |
lineSep |
r \ ,\ r \ n ,\ n (阅读),\ n (写作) |
定义了行分隔符,应该用于解析。JSON内置函数忽略该选项。 | 读/写 |
samplingRatio |
1.0 |
定义的输入使用JSON对象模式推断。 | 读 |
dropFieldIfAllNull |
假 |
是否忽略期间所有空值或空数组的列模式推理。 | 读 |
语言环境 |
en - us |
设置一个区域作为语言标签在IETF BCP 47格式。例如,语言环境 而使用解析日期和时间戳。 |
读 |
allowNonNumericNumbers |
真正的 |
JSON解析器可以识别的“不是一个数字”(南)令牌作为合法的浮点数值。
|
读 |
压缩 |
(没有) | 压缩编解码器使用在保存文件。这可以是一个已知的不区分大小写的缩短名称(没有,bzip2 gzip、lz4时髦和缩小)。JSON内置函数忽略该选项。 | 写 |
ignoreNullFields |
(价值spark.sql.jsonGenerator.ignoreNullFields 配置) |
是否忽略空字段在生成JSON对象。 | 写 |
其他通用选项中可以找到通用文件源选项。