Fel*_*ezR 6 rest apache-spark pyspark databricks azure-databricks
我想利用 Spark(它在 Databricks 上运行,我正在使用 PySpark)向 REST API 发送并行请求。现在我可能面临两种情况:
关于如何在节点之间分配请求有什么建议吗?
谢谢!
Ale*_*Ott 10
只需创建一个包含 URL(如果您使用不同的)和 API 参数(如果它们不是 URL 的一部分)的数据框 - 这可以通过从列表等显式创建它或通过从外部数据读取数据来完成源,例如 JSON 文件或类似的东西(spark.read函数)。
然后定义用户定义的函数,该函数将执行对 REST API 的请求并将数据作为列返回。像这样的东西(未测试):
import urllib
df = spark.createDataFrame(
[("url1", "params1"), ("url2", "params2")],
("url", "params"))
@udf("body string, status int")
def do_request(url: str, params: str):
with urllib.request.urlopen(url) as f:
status = f.status
body = f.read().decode("utf-8")
return {'status': status, 'body': body}
res = df.withColumn("result", do_requests(col("url"), col("params")))
Run Code Online (Sandbox Code Playgroud)
这将返回带有名为的新列的数据帧,result该列将有两个字段 -status和body(JSON 答案)。您需要添加错误处理等。
| 归档时间: |
|
| 查看次数: |
6929 次 |
| 最近记录: |