我已经阅读文档了几个小时,我觉得我的思维方式错误了。
我在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周的样本,它已经达到300MB的标记),所以我正在使用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倍左右)操作,每一列一个,每个形成一个数据帧的一列。
我在做错什么,因为我觉得这不是正确的方法。