取消
顯示的結果
而不是尋找
你的意思是:

Protobuf反序列化的磚

sourander
新的貢獻者三世

你好,

假設我有這些東西:

  • 二進製列包含protobuf-serialized數據
  • .proto文件包括消息定義

不同的方法有磚用戶選擇反序列化數據?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)

我目前的想法是:

  • 執行上麵的代碼使用一個外部的機器。“my_message_derializer創建一個包。輪”,以此作為一個依賴庫的工作/任務/集群。這將需要更新每次原型文件更改使用如git人。
  • 或者,磚,安裝grpcio grpcio-tools,司機上運行和上麵類似的代碼。然後導入創建pb2類並使用消息像往常一樣。

還有其他的方式使用反序列化器和火花?少一點手冊嗎?

1接受解決方案

接受的解決方案

sourander
新的貢獻者三世

這可以幫助別人,我將離開這裏的代碼供參考,我使用磚在一個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執行,但我認為這將改變當我規模數據集。

在原帖子查看解決方案

14日回複14

Kaniz
社區經理
社區經理

你好@sourander!我的名字叫Kaniz,我這裏的技術主持人。很高興認識你,謝謝你的問題!看看你的同行在社區有一個先回答你的問題。否則我們將很快跟進與回複。

sourander
新的貢獻者三世

@Kaniz開羅,社區還沒有提供答案。相似的問題出現在早些時候磚論壇和沒有想法。你有任何想法如何有效地執行這個反序列化數據磚嗎?我們能給引發protobuf文件/信息,它將作為serde對於一個給定的列?

嗨@Jani Sourander,

我的團隊不久將回到你的反應。

謝謝你的耐心:smiling_face_with_smiling_eyes:

匿名
不適用

@Jani Sourander -跟進Kaniz的回答,我們有升級這個問題合適的團隊。她說,他們會回到你盡快。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map