如何从以下架构中选择列“?

Posted

技术标签:

【中文标题】如何从以下架构中选择列“?【英文标题】:How do I select columns " from the below schema? 【发布时间】:2021-01-12 08:41:30 【问题描述】:

读取一个 JSON 文件并使用以下模式注册一个临时表(从带有 Native Spark SQL 推断的 JSON 文件推断)。

df = spark.read.json('/path/to/json', multiLine=True)
babynames.registerTempTable("babynames")

现在我想选择列

"sid", "id", "position", "created_at", "created_meta", "updated_at", "updated_meta", "meta", "year", "first_name", "county", "sex", "count"

使用 Spark SQL 选择语句。

这里是数据源:https://data.cityofnewyork.us/api/views/25th-nujf/rows.json?accessType=DOWNLOAD

【问题讨论】:

您可以发布您为实现该功能所做的尝试吗?您是否卡住或遇到一些错误?如果是,你能提供吗? 请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本。因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work? 【参考方案1】:

将 json 文件放在特定位置后,您可以读取列名如下,但您需要更好地了解 json 元素。

使用 spark Sql :

val df = spark.read.option("multiline",true).json("/path/to/json")
df.createOrReplaceTempView("TestTable")
val selectedColumnsDf = spark.sql(""" Select meta.view.columns.id ,meta.view.columns.position, meta.view.createdAt  from TestTable """)

使用 DataFrame Api 可以如下完成:

val df = spark.read.option("multiline",true).json("/path/to/json")
val selectedColumnsDf = df.select("meta.view.columns.id","meta.view.columns.position","meta.view.createdAt")

我只是选择这三列只是为了给你一个想法。您可以根据需要添加剩余的列。

【讨论】:

以上是关于如何从以下架构中选择列“?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Nhibernate 从连接两个具有所有 id 的表中选择只有一个不同列的多个列是 UNIQUEIDENTIFIER

如何从 unixtime(integer) 列包含当前日期而不考虑时间的表中选择记录?

如何从表中选择主键列?

如何在选择子句中使用参数化列映射 iBATIS 查询?

从sql数据库中删除列后如何更新模型

如何从选择表单输入中显示的值发布不同的值