我有一个包含Array [Byte]的Spark Dataframe。我可以使用isin
来匹配我的Array [Byte]的数据吗?如果我尝试使用这样的:Spark scala Dataframe isin
clientIp.isin((whitelist:_*))
不匹配的whitelist:_*
字节数组正确不格式化为IN(...)
。任何想法如何解决这个问题?
我有一个包含Array [Byte]的Spark Dataframe。我可以使用isin
来匹配我的Array [Byte]的数据吗?如果我尝试使用这样的:Spark scala Dataframe isin
clientIp.isin((whitelist:_*))
不匹配的whitelist:_*
字节数组正确不格式化为IN(...)
。任何想法如何解决这个问题?
您可以转换Array[Byte]
到Java String
,那么你就可以isin(whitelist:_*)
,如果你的白名单匹配这个List<String>
按文档,isin
方法接受java.lang.Object继承或Seq(java.lang.object)
嗯,是的,但是我在Array [Byte]中有很多数据,转换速度会很慢。我宁愿将数据保留在字节中并比较字节 – Skoky
根据scala docs,isin方法需要vrag而不是Seq [String]。在你的情况下,如果你将你的数据转换为Seq [String],你可以执行以下操作:
df.filter(column_name.isin(seqOfString: _*))
可以将Array [Byte]转换为列表,然后可以使用它吗? – Shankar
你可以将'Array [Byte]转换为字符串',如果你的白名单'List' –
Shankar
既然https://spark.apache.org/docs/可以与'isin(白名单:_ *)匹配1.6.0/api/java/org/apache/spark/sql/Column.html#isin(scala.collection.Seq)接受'java.lang.object'的序列,只要你能转换'Array [Byte ]'某种形式的java.lang.object,它应该工作。 – Shankar