Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 从空数组创建类型化数组列_Arrays_Apache Spark - Fatal编程技术网

Arrays 从空数组创建类型化数组列

Arrays 从空数组创建类型化数组列,arrays,apache-spark,Arrays,Apache Spark,我只想解决以下问题:我想过滤掉数据帧的所有元组,其中一列中包含的字符串不包含在黑名单中,黑名单作为字符串数组(可能是空的) 例如:如果黑名单包含“四十二”和“二十三”,则所有行都将从相应列包含“四十二”或“二十三”的数据帧中筛选出来 如果黑名单不为空(例如Array(“fourty-two”))且else(Array.empty[String])失败,则以下代码将成功执行: 错误消息是: org.apache.spark.sql.AnalysisException: cannot resolve

我只想解决以下问题:我想过滤掉数据帧的所有元组,其中一列中包含的字符串不包含在黑名单中,黑名单作为字符串数组(可能是空的)

例如:如果黑名单包含“四十二”和“二十三”,则所有行都将从相应列包含“四十二”或“二十三”的数据帧中筛选出来

如果
黑名单
不为空(例如Array(“fourty-two”))且else(Array.empty[String])失败,则以下代码将成功执行:

错误消息是:

org.apache.spark.sql.AnalysisException: cannot resolve 'UDF(array(), theStringColumn)' due to data type mismatch: argument 1 requires array<string> type, however, 'array()' is of array<null> type
org.apache.spark.sql.AnalysisException:由于数据类型不匹配,无法解析'UDF(array(),theStringColumn'):参数1需要数组类型,但是'array()'是数组类型

看起来,空数组似乎是无类型的。有什么好办法解决这个问题吗?

你想得太多了。这里您真正需要的是
isin

val黑名单=Seq(“foo”、“bar”)
$“theStringColumn”.isin(黑名单:*)
此外,不要依赖
ArrayType
的本地类型作为
WrappedArray
。只需使用
Seq

最后,要回答您的问题,您可以:

array().cast(“array”)
或:

import org.apache.spark.sql.types.{ArrayType,StringType}
array().cast(ArrayType(StringType))

那么黑名单就是一个数组?实际上我不太确定你想做什么是的,eliasah。它包含我不想在列“字符串列”中出现的字符串。您能举个例子吗?(输入、黑名单和预期输出)当然,我添加了一个示例。谢谢!我一直在寻找的解决方案是铸造。不知怎么的,我错过了。还感谢您提供有关使用Seq的提示。我试试看。
org.apache.spark.sql.AnalysisException: cannot resolve 'UDF(array(), theStringColumn)' due to data type mismatch: argument 1 requires array<string> type, however, 'array()' is of array<null> type