drop-fields - only work with structured objects (only AVRO supported today). But it doesn't have to be KeyValue schema, and even in a KeyValue schema, you only need the part from which you want to drop fields from to be structured, they other part could be primitive
drop - both structured and primitive types supported. In the predicate, you can do things like value == 5 for primitive types or value.field == 5 for structured types. Similar thing for the key (in a KeyValue schema).
compute - both structured and primitive types supported.