1
並行化的HTTP請求我使用pyspark做一些數據轉換:類似如下:與Pyspark
df_systems_tree_users = sqlContext.read.format("jdbc") \
.option("dbtable",
"(select ID as SYSTEMUID,M_EXTERNAL_ID,metric,DATATRANSMISSIONFREQUENCY,MODEL,BRAND,BUILDING FROM SYSTEM INNER JOIN SENSOR ON SYSTEM.ID=SENSOR.SYSTEMID WHERE LPWANOPERATOR='Objenious' AND M_EXTERNAL_ID!='None')") \
.option("url", "jdbc:phoenix:master1:2181:/hbase-unsecure") \
.option("driver", "org.apache.phoenix.jdbc.PhoenixDriver") \
.load()
objRDD = df_systems_tree_users.rdd.map(lambda x: getStatesAndUplink(x))
getStatesAndUplink方法使用請求python庫來執行HTTP GET請求外部API。
我在4個執行器上運行4個執行器,每個執行器有4個內核,但運行30分鐘需要很多時間。
我的問題是如何優化我的代碼以高效的方式並行化我的http請求?
你的getStatesAndUplink(x)函數到底是什麼?堅持使用數據框和使用UDF可能會更快。 – MaFF