var rtn = df.select(
col( colmap.get("AAAAA")) as "AAAAA",
lit( colmap.get("BBBBB")) as "BBBBB",
col( colmap.get("CCCCC")) as "CCCCC",
col( colmap.get("DDDDD")) as "DDDDD"
)
.where( col("AAAAA").isNotNull && col("BBBBB").isNotNull && col("CCCCC").isNotNull && col("DDDDD").isNotNull)
rtn.show()返回dataframe仍然有一些空值。我做错了吗?
电流输出
+--------+-----------+-----------
|AAAAA|BBBBB|CCCCC|DDDDD|EEEEE|
+--------+-----------+-----------
|A11111|B12345|C1111|D11111| |
|A22222|B12345|C2222|D22222| |
|A33333|B12345|C3333|D33333|E11111|
|A44444|B12345|C4444|D44444| |
|A55555|B12345|C5555|D55555|E11111|我的预期产出
+--------+-----------+-----------
|AAAAA|BBBBB|CCCCC|DDDDD|EEEEE|
+--------+-----------+-----------
|A11111|B12345|C1111|D11111|E11111|
|A22222|B12345|C2222|D22222|E11111|
|A33333|B12345|C3333|D33333|E11111|
|A44444|B12345|C4444|D44444|E11111|
|A55555|B12345|C5555|D55555|E11111|EEEEE列中仍有一些空值。DataFrame,其中的条件似乎不能正常工作。
发布于 2016-12-02 12:37:19
看起来您的数据包含空白字符串,而不是NULLs。若要筛选空字符串,可以使用rlike
import org.apache.spark.sql.functions.not
not($"foo".rlike("^\\s*$"))) // or !$"foo".rlike("^\\s*$")或者trim和length
import org.apache.spark.sql.functions.{trim, length}
length(trim($"foo")) =!= 0另外,您可以使用DataFrameNaFunctions.drop与列序列一起删除包含NULL的行。
df.na.drop(Seq("foo", "bar"))或
df.na.drop()如果您想要删除所有包含行的NULL。
https://stackoverflow.com/questions/40927981
复制相似问题