我的问题是,我有一个列表,这些不属于空找到。当我使用的过滤功能不为空,比我还得到每一行。
我的程序代码如下所示:
...
val csc = new CassandraSQLContext(sc)
val df = csc.sql("SELECT * FROM test").toDF()
val wrapped = df.select("fahrspur_liste")
wrapped.printSchema
列fahrspur_liste
包含包裹阵列和本专栏我来分析。当我运行的代码,比我得到这个结构,我的包裹阵列和这些条目:
root
|-- fahrspur_liste: array (nullable = true)
| |-- element: long (containsNull = true)
+--------------+
|fahrspur_liste|
+--------------+
| []|
| []|
| [56]|
| []|
| [36]|
| []|
| []|
| [34]|
| []|
| []|
| []|
| []|
| []|
| []|
| []|
| [103]|
| []|
| [136]|
| []|
| [77]|
+--------------+
only showing top 20 rows
现在我要过滤这些行,让我只有条目[56],[36],[34],[103],...
我如何写一个过滤功能,我得到的只有这些行,它包含了一些?
您可以在星火的udf
做到这一点:
val removeEmpty = udf((array: Seq[Long]) => !array.isEmpty)
val df2 = df.filter(removeEmpty($"fahrspur_liste"))
这里的udf
检查该数组为空或没有。然后,过滤功能将删除那些回来为真。