У меня есть DataFrame, который содержит различные столбцы. Один столбец содержит карту [Integer, Integer []]. Похоже, что { 2345 -> [1,34,2]; 543 -> [12,3,2,5]; 2 -> [3,4]}
Теперь мне нужно отфильтровать некоторые ключи. У меня есть множество целых чисел (javaIntSet) в Java, с которым я должен фильтровать такие, чтоextract или filter MapType of Spark DataFrame
col(x).keySet.isin(javaIntSet)
т.е.. приведенная выше карта должна содержать только ключи 2 и 543, но не две другие и должна выглядеть как {543 -> [12,3,2,5]; 2 -> [3,4]}
после фильтрации.
Документация о том, как использовать класс столбцов Java, является разреженной. Как извлечь col (x), чтобы я мог просто фильтровать его в java, а затем заменить данные ячейки на отфильтрованную карту. Или есть какие-то полезные функции столбцов, которые я пропускаю. Могу ли я написать UDF2<Map<Integer, Integer[]>,Set<Integer>,Map<Integer,Integer[]>
Я могу написать UDF1<String,String>
, но я не уверен, как он работает с более сложными параметрами.
Обычно javaIntSet - это всего лишь дюжина и обычно менее 100 значений. Карта обычно также имеет только несколько записей (обычно 0-5).
Я должен сделать это на Java (к сожалению), но я знаком с Scala. Ответ Scala, который я перевел на Java, уже будет очень полезен.
Позор ОП не проверял этот ответ! Очень хорошие примеры Давид спасибо – dedpo