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

性能問題與pyspark udf調用rest api函數

sensanjoy
貢獻者

你好,

我麵臨一些性能問題的pyspark udf post數據的REST API函數(使用宇宙數據庫後端存儲的數據)。

請找到下麵的細節:

#火花dataframe (df)包含關於數據30-40k附近。

#我是使用python udf張貼在rest api函數:

例如final_df = df。withColumn(“地位”,save_data (A, B, C))

# udf功能:

@udf (returnType = IntegerType ())

def save_data (A, B, C):

post_data =列表()

post_data.append ({

A:,

B: B,

“C”: C,

})

retry_strategy =重試(

總= 5,

status_forcelist = [400、500、502、503、504),

method_whitelist =(“文章”),

backoff_factor = 0.1

)

適配器= HTTPAdapter (max_retries = retry_strategy)

s = requests.Session ()

年代。山(“https://”,適配器)

年代。山(“http://”,適配器)

年代。keep_alive = False

試一試:

響應= s.post (

url = rest_api_url,

頭={“授權”:“持票人”+ api_token,“內容類型”:“application / json "},

data = json.dumps (post_data)

)

返回response.status_code

除了:

響應= requests.post (

url = rest_api_url,

頭={“授權”:“持票人”+ api_token,“內容類型”:“application / json "},

data = json.dumps (post_data)

)

返回response.status_code

#問題:磚工作被絞死的無限次rest api調用(save_data()),從未成功。

#當檢查從API,它顯示了服務接觸最大資源利用率(100%)。

對我來說它就像python udf是一次發送大量數據淹沒了api服務在某種程度上的時間和它停止響應。

我們將是最好的辦法可以解決這個問題?

我們應該把dataframe分成多個塊和一個一個發送還是

把它轉換成熊貓df然後發送逐行(可能是慢)

請建議。

5回複5

完成了。

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

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

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

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

Baidu
map