apache-spark - Pyspark - 如何在转换后将列传递给函数?
问题描述
首先,我错误地调用sha2
了函数pyspark.sql.functions
,将一列 DoubleType 传递给它并得到以下错误:
cannot resolve 'sha2(`metric`, 256)' due to data type mismatch: argument 1 requires binary type, however, '`metric`' is of double type
然后我尝试首先将列转换为 StringType 但仍然遇到相同的错误。我可能会错过一些关于 Spark 如何处理列转换的内容。
我注意到,当我只调用 adf.withColumn(col_name, F.lit(df[col_name].cast(StringType())))
而不调用.withColumn(col_name, F.sha2(df[col_name], 256))
列时,类型会更改为 StringType。
在这种情况下,我应该如何正确应用转换?
def parse_to_sha2(df: DataFrame, cols: list):
for col_name in cols:
df = df.withColumn(col_name, F.lit(df[col_name].cast(StringType()))) \
.withColumn(col_name, F.sha2(df[col_name], 256))
return df
解决方案
你不需要在这里点亮
尝试
.withColumn(col_name, F.sha2(df[col_name].cast('string'), 256))
推荐阅读
- python - 如何处理时间间隔的求和和乘法?
- pandas - Pandas 以批量大小随机排列顺序数据
- python - 如何为 pcolormesh 指定轴?
- docker - 用于源 bash 配置文件的 Docker RUN 指令
- r - 如何转换具有内存大小的列 Ex。MB & KB,我想要 MB 中的所有值?
- android - 转到链接后的 WebView 空白页
- c# - 如何在单个代理类中添加多个服务引用
- spring - 我想通过使用 cron 表达式设置每 24 小时安排一次任务
- typescript - 是否可以将一种类型的字段混合到另一种类型中?
- reactjs - 在 setState 之后反应不更新渲染