我一直在尝试在我的Python程序中使用协议缓冲区,但无法使其工作.我正在运行Windows 8机器,并尝试过Python 2.7.6和Python 3.3.我下载了Python的二进制协议缓冲编译器并用它myProto_pb2.py
从我的myProto.proto
文件生成,但是当我运行我的Python程序时出现以下错误:
从"import myProto_pb2"行,从协议缓冲区版本2.5使用Python 2.7.6时出现以下错误:
from google.protobuf import descriptor as _descriptor
ImportError: No module named google.protobuf
Run Code Online (Sandbox Code Playgroud)
如何在Windows上从Python正确安装和运行协议缓冲区?
有没有办法选择整个行作为列输入到Pyspark过滤器udf中?
我有一个复杂的过滤功能“ my_filter”,我想将其应用于整个DataFrame:
my_filter_udf = udf(lambda r: my_filter(r), BooleanType())
new_df = df.filter(my_filter_udf(col("*"))
Run Code Online (Sandbox Code Playgroud)
但
col("*")
Run Code Online (Sandbox Code Playgroud)
抛出错误,因为这不是有效的操作。
我知道我可以将数据帧转换为RDD,然后使用RDD的filter方法,但是我不想将其转换为RDD,然后再转换为数据帧。我的DataFrame具有复杂的嵌套类型,因此当我尝试再次将RDD转换为数据帧时,架构推断将失败。