Необходимо сравнить два кадра данных и создать третий кадр данных, чтобы сгенерировать разницу. При сравнении фреймов данных необходимо соблюдать несколько условий.
DF1:(Struct type -> empid:IntegerType,name:StringType,phone:IntegerType)
empid|name|phone
1| amar | 12345
2| 23 |<blank>
DF2: я разыгрываю DF1 по их типам данных. (col(c).cast(datatype))
empid|name|phone
1| amar | 12345
2| null | null
Теперь здесь, поскольку имя было строковым типом, оно преобразуется в ноль. Кроме того, так как телефон был целым числом, пробел был приведен к нулю.
Мне нужна помощь для создания третьего Dataframe, который должен указывать только на ошибку приведения, которую я имел. Если я рассматриваю все нуль, это берет чистый бросок телефона также, который я не хочу. Ниже приведен пример ожидаемого DF3.
DF3:
empid|name|phone |error
1| amar | 12345 |null
2| 23 |<blank> |name is wrong data type