gpt4 book ai didi

json - 在 Spark SQL 中使用 JSON 路径

转载 作者:行者123 更新时间:2023-12-04 19:39:27 24 4
gpt4 key购买 nike

在 Spark SQL 中使用嵌套 JSON 时,是否可以使用 JSON 路径从 JSON 中提取数据?

例如:

{
"store": {
"book": [
{
"category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{
"category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{
"category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{
"category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
},
"expensive": 10
}

要使用 json 路径选择书籍类别引用的作者,我可以使用 $.store.book[?(@.category == 'reference')].author

是否可以使用此类操作定义 Spark 表?

最佳答案

我不知道使用 JSONPath 来做你想做的事情的方法,但我会这样做:

  1. 分解数组,
  2. 查询记录。

请注意,您不必分解整个数组。

代码:

package net.jgp.books.sparkInAction.ch12.lab920QueryOnJson;

import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.functions;

/**
* Using JSONpath-like in SQL queries.
*
* @author jgp
*/
public class QueryOnJsonApp {

/**
* main() is your entry point to the application.
*
* @param args
*/
public static void main(String[] args) {
QueryOnJsonApp app = new QueryOnJsonApp();
app.start();
}

/**
* The processing code.
*/
private void start() {
// Creates a session on a local master
SparkSession spark = SparkSession.builder()
.appName("Query on a JSON doc")
.master("local")
.getOrCreate();

// Reads a JSON, stores it in a dataframe
Dataset<Row> df = spark.read()
.format("json")
.option("multiline", true)
.load("data/json/store.json");

// Explode the array
df = df
.withColumn("items", functions.explode(df.col("store.book")));

// Creates a view so I can use SQL
df.createOrReplaceTempView("books");
Dataset<Row> authorsOfReferenceBookDf =
spark.sql("SELECT items.author FROM books WHERE items.category = 'reference'");
authorsOfReferenceBookDf.show(false);
}
}

我认为这是一个很好的问题,我将其添加到 Spark in Action 的第 12 章中.

关于json - 在 Spark SQL 中使用 JSON 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48973729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com