Решение состоит в том, чтобы создать udf
для выполнения побитовой операции, как показано ниже:
scala> val input = Seq((1, 3468936084L),(2,1468936085L)).toDF("id","num")
input: org.apache.spark.sql.DataFrame = [id: int, num: bigint]
scala> input.show
+---+----------+
| id| num|
+---+----------+
| 1|3468936084|
| 2|1468936085|
+---+----------+
scala> val myUdf = udf((number: Long) => (number) >> 16 & 255)
myUdf: org.apache.spark.sql.expressions.UserDefinedFunction = UserDefinedFunction(<function1>,LongType,Some(List(LongType)))
scala> input.printSchema
root
|-- id: integer (nullable = false)
|-- num: long (nullable = false)
scala> val df1 = input.withColumn("bitwise", myUdf(col("num")))
df1: org.apache.spark.sql.DataFrame = [id: int, num: bigint ... 1 more field]
scala> df1.show
+---+----------+-------+
| id| num|bitwise|
+---+----------+-------+
| 1|3468936084| 195|
| 2|1468936085| 142|
+---+----------+-------+
Дайте мне знать, если это поможет !!