udf使用:
问题:
不能传入一个df,udf中使用另一个udf,这将抛出一个错误TypeError: cannot pickle '_thread.RLock' object
解决:
使用join的大于小于过滤条件
df1.join(df2, on=[(df2.timestamp > df1.start) & (df2.timestamp < df1.end)]) \ .groupby('start', 'end', 'event_name') \ .agg(F.mean('measurement').alias('avg')) \ .show()
问题:
pysaprk struct类型作为key的map不能转成dict的key
python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
PickleException: expected zero arguments for construction of ClassDict for pyspark.sql.dtypes._create_row
貌似是由于返回值