【问题标题】: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?

标签: apache-spark-sql


【解决方案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")

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

【讨论】:

    猜你喜欢
    • 2013-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2020-01-11
    相关资源
    最近更新 更多