gpt4 book ai didi

sql - 使用 Spark SQL 将一列拆分为多列

转载 作者:行者123 更新时间:2023-12-05 04:06:46 30 4
gpt4 key购买 nike

我有一列 col1 表示 GPS 坐标格式:

25 4.1866N 55 8.3824E

我想根据空格作为分隔符将它分成多列,如下面的输出示例 table_example 所示:

| 1st_split  | 2nd_split   | 3rd_split    | 4th_split    |
|:-----------|------------:|:------------:|:------------:|
| 25 | 4.1866N | 55 | 8.3824E |

考虑到有split()函数,我试过这样:

SELECT explode(split(`col1`, ' ')) AS `col` FROM table_example;

但是,它不是按多列拆分,而是按多行拆分,如下面的输出所示:

output

有人可以向我说明哪种方法值得获得预期结果吗?

最佳答案

如果你有一个数据框

+---------------------+
|col |
+---------------------+
|25 4.1866N 55 8.3824E|
+---------------------+

使用 Scala API

您可以简单地使用 split 内置函数select 作为

import org.apache.spark.sql.functions._
df.withColumn("split", split(col("col"), " "))
.select(col("split")(0).as("1st_split"), col("split")(1).as("2nd_split"),col("split")(2).as("3rd_split"),col("split")(3).as("4th_split"))
.show(false)

这会给你

+---------+---------+---------+---------+
|1st_split|2nd_split|3rd_split|4th_split|
+---------+---------+---------+---------+
|25 |4.1866N |55 |8.3824E |
+---------+---------+---------+---------+

使用SQL方式

Sql 更简单,类似于api方式

df.createOrReplaceTempView("table_example")
val splitted = sqlContext.sql("SELECT split(`col`, ' ') AS `col` FROM table_example")

splitted.createOrReplaceTempView("splitted_table")
val result = sqlContext.sql("SELECT `col`[0] AS `1st_split`, `col`[1] AS `2nd_split`, `col`[2] AS `3rd_split`, `col`[3] AS `4th_split` FROM splitted_table")
result.show(false)

希望回答对你有帮助

关于sql - 使用 Spark SQL 将一列拆分为多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49410480/

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