你好,
假設我有這些東西:
不同的方法有磚用戶選擇反序列化數據?Python是我主要熟悉的編程語言,因此,任何可以通過使用pyspark就好了。
在本地,我的方法是使用grpc_tool。protoc生成pb2文件(消息。原型- > message_pb2.python)。我後來在進口這些類並使用approariate消息反序列化的二進製數據。示例代碼如下:
進口操作係統從grpc_tools進口進口pkg_resources protoc #詳細打印(f”(建築){protopath}”) #出於某種原因,grpc_tools。protoc不包括_proto模塊導致錯誤:#“google.protobuf。時間戳”沒有定義。path_to_module = pkg_resources。resource_filename (“grpc_tools”、“_proto”) #旗幟args = (grpc_tools。protoc”, #參數不需要0 f”——proto_path = {proto_path}”, f”——python_out = {OUTPUT_PATH}”, f - i {path_to_module}, # f”——grpc_python_out = {OUTPUT_PATH}”, protopath.split (“/”) [1]) protoc.main (args)
我目前的想法是:
還有其他的方式使用反序列化器和火花?少一點手冊嗎?
這可以幫助別人,我將離開這裏的代碼供參考,我使用磚在一個UDF的運行方法。
從輸入迭代器進口@pandas_udf(“字符串”)def my_test_function (blob:迭代器[pd.Series]) (pd - >迭代器。係列:d = ProtoFetcher blob (blob my_message_name):收益率blob.apply new_df = df (d.blob_to_json)。withColumn (“col_as_json my_test_function (“original_col”))
對於小數據集,這正如non-Pandas UDF執行,但我認為這將改變當我規模數據集。