使用 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)
如果我能找到这方面的文档,那将会很有帮助。我也想对其他类型进行其他类型的转换(或强制转换)。非常感谢任何关于这两者之一或两者的指导。
原文由 chaotic3quilibrium 发布,翻译遵循 CC BY-SA 4.0 许可协议
概括:
Apache Spark 的 SQL 与 Apache Hive 部分兼容。因此,大多数可以用 Hive 编写的 SQL 都可以用 Spark SQL 编写。
细节:
要将 STRING 转换为特定的数字类型(如 INT),可以使用强制转换。强制转换包括用括号包裹目标并在括号前面加上要更改的类型。例如,演员表可能如下所示:
因此,要使原始发布问题中的 SQL 正常工作,需要将其更改为如下所示(将名为“TO_NUMBER”的原始函数替换为“INT”):