如何在pyspark中将GUID转换为整数



Hi-Stackoverflow fams:

我是新来的pyspark和尝试学习尽我所能。但现在,我想在pysprak中将GUID转换为整数。我目前可以在SQL中运行以下语句,将GUID转换为int。

CHECKSUM(HASHBYTES('sha2_512',GUID)) AS int_value_wanted

我想在pyspark中做同样的事情,并尝试从spark数据帧中创建一个临时表,并在sql查询中添加上述语句。但代码不断抛出";未定义的函数:"CHECKSUM";。有没有一种方法可以添加";CHECKSUM";函数转换为pyspark,还是使用另一种pyspark方式做同样的事情?

from awsglue.context import GlueContext
from pyspark.sql import SQLContext
glueContext = GlueContext(SparkContext.getOrCreate())
spark_session = glueContext.spark_session
sqlContext = SQLContext(spark_session.sparkContext, spark_session)
spark_df =  spark.createDataFrame(
[("2540f487-7a29-400a-98a0-c03902e67f73", "1386172469"),
("0b32389a-ce01-4e6a-855c-15940cc91e9e", "-2013240275")],
("GUDI","int_value_wanted")
)
spark_df.show(truncate=False)
spark_df.registerTempTable('temp')
new_df = sqlContext.sql("SELECT .*, CHECKSUM(HASHBYTES('sha2_512', GUDI)) AS detail_id FROM temp")
new_df.show(truncate=False)
+------------------------------------+----------------+
|GUDI                                |int_value_wanted|
+------------------------------------+----------------+
|2540f487-7a29-400a-98a0-c03902e67f73|1386172469      |
|0b32389a-ce01-4e6a-855c-15940cc91e9e|-2013240275     |
+------------------------------------+----------------+

感谢

有一个sha2内置函数,它以十六进制字符串的形式返回SHA-2族的校验和。还支持SHA-512。

最新更新