spark sql concat和强制转换操作导致列的空值

时间:2019-06-17 12:46:08

标签: sql scala apache-spark apache-spark-sql bigdata

我正在spark SQL查询中执行concatcast操作,如下所示:

spark.sql ("select cast(concat(df_view.col1,"  ") as Long) as new_col from df_view")

但是我在得到的DF中得到了null值。如果仅执行强制转换或连续转换操作,则将获得正确的结果,但是同时执行两个操作,将获得null值。

请提出建议,如果我在语法中缺少某些内容,我检查了其他答案,但无法找出问题所在,而且我在这里仅使用spark SQL,而不使用DF语法操作。

1 个答案:

答案 0 :(得分:0)

如果您要以文本形式写入文件,则不要将其强制转换为Long,最好使用pad函数来确保您写入的宽度正确。

我从评论中认为,您的问题是固定宽度的文件,但一般来说,将空白合并为空,然后尝试将结果转换为数字是没有意义的。您之前已经明确地使其不是数字。

理想情况下,您将文件格式视为文件格式,而不是通过任意操作每个字段来处理,但是,如果您正确地处理每个字段,则后者可以工作。