使用 Spark 2.1(在 Databricks 上),我有一个表,由于从 .CSV 文件导入,它有一个 String 类型的列。在对该表的 SELECT 查询中,我试图在数学运算中使用列值之前将该列的值转换为整数。我一直无法找到正确的 Spark SQL“函数”来执行此操作。
下面是 SQL 的示例。 “TO_NUMBER”不适用于两个字符串中的任何一个; Sum_GN_POP 或 Count1:
SELECT name AS geohashPrefix3, TO_NUMBER(Sum_GN_POP) AS totalPopulation, TO_NUMBER(Count1) AS landMass
FROM wayne_geohash3
WHERE (LENGTH(name) = 3)
如果我能找到这方面的文档,那将会很有帮助。我也想用其他类型进行其他类型的转换(或强制转换)。非常感谢任何关于这两者或其中之一的指导。
最佳答案
您可以将其设为 Integer
来自 csv
文件使用选项 推断架构 像这样 :
val df = spark.read.option("inferSchema", true).csv("file-location")
话虽如此: inferSchema 选项有时会出错,并将类型设置为
String
.如果是这样,您可以使用 cast
运算符(operator)在 Column
数据框/数据集实现:
val df2 = df.withColumn("Count1", $"Count1" cast "Int" as "landMass").withColumn("Count1", $"Sum_GN_POP" cast "Int" as "totalPopulation")
SQL 实现:
SELECT name AS geohashPrefix3, CAST(Sum_GN_POP as INT) AS totalPopulation, CAST(Count1 AS INT) AS landMass
FROM wayne_geohash3
WHERE (LENGTH(name) = 3)
关于sql - 如何将 String 值转换(或强制转换)为 Integer 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45898806/