当前位置: 首页 > 面试题库 >

PySpark sqlContext JSON查询数组的所有值

赏航
2023-03-14
问题内容

我目前有一个json文件,我正在尝试使用sqlContext.sql()进行查询,如下所示:

{
  "sample": {
    "persons": [
      {
        "id": "123",
      },
      {
        "id": "456",
      }
    ]
  }
}

如果我只想要第一个值,请输入:

sqlContext.sql("SELECT sample.persons[0] FROM test")

但是我想要“人”的所有值而不必编写循环。循环会消耗太多的处理能力,并且鉴于这些文件的大小,这将是不切实际的。

我以为我可以在[]括号内放一个范围,但是我找不到任何语法可以做到这一点。


问题答案:

如果您的架构如下所示:

root
 |-- sample: struct (nullable = true)
 |    |-- persons: array (nullable = true)
 |    |    |-- element: struct (containsNull = true)
 |    |    |    |-- id: string (nullable = true)

并想要structspersons数组访问单个对象,您需要做的就是将其爆炸:

from pyspark.sql.functions import explode

df.select(explode("sample.persons").alias("person")).select("person.id")


 类似资料:
  • 我第一次使用mongo。我正在尝试使用下面的查询聚合集合中的一些文档。相反,查询返回一个具有键“result”的对象,该键包含一个包含符合$match的所有文档的数组。 下面是查询。 以下是集合中的示例文档: 我正在尝试将所有内容按uid进行分组,每个组的总和。。。实现这一目标的正确方法是什么?

  • 问题内容: 我有一个像这样的数据结构 我需要查询“电话号码”中的所有元素,并且必须检查这些电话号码是否已存在于另一个集合中。我的数据结构的下一条路径是 是否可以在Firestore中进行任何索引编制? 问题答案: 如官方文档中所示: 尽管Cloud Firestore可以存储阵列,但可以 查询阵列成员或更新单个阵列元素。 如果只想获取整个数组,则需要像这样迭代: 但是请注意,即使对象作为数组存储在

  • 问题内容: 如何在N个可变长度的JavaScript数组中生成值的所有组合? 假设我有N个JavaScript数组,例如 (在此示例中为三个数组,但针对该问题的数组数为N。) 我想输出其值的所有组合,以产生 编辑:这是我使用ffriend接受的答案作为基础的版本。 问题答案: 这不是排列,请参阅Wikipedia中的排列定义。 但是您可以通过 递归 实现: 您也可以使用循环来实现,但是这会有些棘手

  • 我有3个表:,, 我需要获得一个特定组中的用户列表,所有用户都需要包含作为成员的所有组。 我试过这样的东西: 但这将返回组中id为SOMEID所有用户,且仅连接用于搜索的一个组,即使一个用户是多个组的成员。 多谢了。

  • 问题内容: 如何记录django应用程序执行的所有SQL查询? 我想记录所有内容,包括来自管理站点的SQL。我看到了这个问题和一个常见问题解答,但是我仍然不知道应该把它放在哪里 将所有内容记录到一个文件? 所以我的问题是-我应该怎么做才能拥有一个记录所有SQL语句的文件(例如all-sql.log)? 问题答案: 也许看看https://github.com/django-debug-toolba