【发布时间】: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