如何在pyspark中将GUID转换为整数
Posted
技术标签:
【中文标题】如何在pyspark中将GUID转换为整数【英文标题】:How to convert GUID into integer in pyspark 【发布时间】:2021-08-04 18:46:16 【问题描述】:你好 *** 家族:
我是 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 |
+------------------------------------+----------------+
谢谢
【问题讨论】:
【参考方案1】:有一个sha2 内置函数,它将SHA-2 系列的校验和作为十六进制字符串返回。也支持 SHA-512。
【讨论】:
感谢您的及时回复...实际上是将字符串转换为二进制。我真正想要的是将这些二进制文件转换回 int 或 str。以SELECT sha2('Spark', 256); will give "529bc3b07127ecb7e53a4dcf1991d9152c24537d919178022b2c42657f79a26b" and I want to convert this binary back to "Spark" as a str value
为例以上是关于如何在pyspark中将GUID转换为整数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 pyspark 中将 DenseMatrix 转换为 spark DataFrame?