Spark SQL from_json 文档
Posted
技术标签:
【中文标题】Spark SQL from_json 文档【英文标题】:Spark SQL from_json documentation 【发布时间】:2018-05-16 14:06:03 【问题描述】:在哪里可以找到有关 Spark SQL 中 from_json 函数的 schema 参数的更多详细信息?一位同事给了我一个可行的模式示例,但老实说,我只是不明白,它看起来不像我迄今为止找到的任何示例。找到的文档here 似乎缺少。
【问题讨论】:
【参考方案1】:在您分享的链接中,from_json
函数使用此示例:
SELECT from_json('"a":1, "b":0.8', 'a INT, b DOUBLE');
Spark SQL 支持绝大多数 Hive 功能,例如 defining TYPES
我遇到的示例问题要求我解析以下 JSON 对象:
'data': [
"id":02938,
"price": 2938.0,
"quantity": 1
,
"id":123,
"price": 123.5,
"quantity": 2
]
相应的 Spark SQL 查询如下所示:
SELECT
from_json('"data":["id":123, "quantity":2, "price":39.5]'),
'data array<struct<id:INT, quantity:INT, price:DOUBLE>>').data) AS product_details;
您可以将此与
explode
函数结合使用,以将每个元素提取到它自己的列中。
我推荐这个post 来了解更多关于构造查询类型的信息。
有关更多示例,请参阅此 SO 帖子 https://***.com/a/55432107/1500443
【讨论】:
示例给出错误 IndentationError: unexpected indent this works: SELECT from_json( '"data":["id":123, "quantity":2, "price":39.5] ', '数据数组看起来您可以将 JSON 传递给 schema_of_json
函数以获取架构,因此无论 JSON 是什么,我都使用它来获取正确的架构:
SELECT from_json(col, schema_of_json(col))
在您的情况下,您还需要将map('allowNumericLeadingZeros', 'true')
添加到两个函数调用中,因此:
SELECT from_json(
col,
schema_of_json(col, map('allowNumericLeadingZeros', 'true')),
map('allowNumericLeadingZeros', 'true')
)
【讨论】:
以上是关于Spark SQL from_json 文档的主要内容,如果未能解决你的问题,请参考以下文章
Spark2 Kafka结构化流Java不知道from_json函数
如何将 from_json 与 Kafka connect 0.10 和 Spark Structured Streaming 一起使用?
Spark 1.3.x 的 org.apache.spark.sql.cassandra 的 API 文档在哪里?
《Spark Python API 官方文档中文版》 之 pyspark.sql
Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN