【问题标题】:How to convert GUID into integer in pyspark如何在pyspark中将GUID转换为整数
【发布时间】:2021-08-04 18:46:16
【问题描述】:

你好 Stackoverflow 家族:

我是 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     |
+------------------------------------+----------------+

谢谢

【问题讨论】:

    标签: apache-spark pyspark apache-spark-sql aws-glue aws-glue-spark


    【解决方案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 为例
    猜你喜欢
    • 1970-01-01
    • 2021-02-28
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 1970-01-01
    • 2023-03-06
    相关资源
    最近更新 更多