Я читаю документацию уже несколько часов и чувствую, что подхожу к проблеме с неправильным складом ума.
У меня есть две таблицы в HIVE, которые я читаю с (spark.table(table_A))
с тем же количеством иТип столбцов, но с разным происхождением, поэтому их данные разные.Обе таблицы отражают флаги, которые показывают, выполняется ли условие.По крайней мере, существует около 20 столбцов, и они могут увеличиться в будущем.
Если первая строка таблицы table_A будет иметь значение 0 0 1 1 0
table_B может быть 0 1 0 1 0
, Я бы хотел, чтобы результат былрезультат XNOR, сравнивая позиции, так: 1 0 0 1 1, так как он имеет одинаковые значения в первой, четвертой и пятой позициях
Итак, я подумал об операции XNOR, когда еслиоба значения совпадают, затем возвращается 1, а в противном случае 0.
Я столкнулся с рядом проблем, одной из которых является объем моих данных (сейчас я работаю с выборкой за 1 неделю ион уже на отметке 300 МБ), поэтому я работаю с pyspark и избегаю панд, поскольку он обычно не помещается в памяти и / или сильно отстает от операции.
Подводя итог, у меня есть два объектатипа pyspark.sql.dataframe.DataFrame
, у каждой есть одна из таблиц, и пока лучшее, что у меня есть, это примерно так:
df_bitwise = df_flags_A.flag_column_A.bitwiseXOR(df_flags_B.flag_columns_B)
Но, к сожалению, это возвращает pyspark.sql.column.Column
, и яне знаю, как прочитать этот результат, и я не знаю, чтобы построитьДа, с этим (с кадром данных) (я бы хотел, чтобы конечный результат был примерно в 20 раз вышеупомянутой операцией, по одному для каждого столбца, каждый из которых формировал столбец в кадре данных).
Что я делаю неправильно, потому что чувствую, чтоэто не правильный подход.