![](/img/trans.png)
[英]Azure function C#: Writing to Block blob (csv file) on Azure Storage Account creates two versions of the blob
[英]pandas to_csv function not writing to Blob Storage when called from Spark UDF
我正在使用 Spark UDF 从 GET 端点读取一些数据并将它们作为 CSV 文件写入 Azure BLOB 位置。
我的 GET 端点采用 2 个查询参数,param1 和 param2。 所以最初,我有一个 dataframe paramDF,它有两列 param1 和 param2。
param1 param2
12 25
45 95
Schema: paramDF:pyspark.sql.dataframe.DataFrame
param1:string
param2:string
现在我写了一个接受这两个参数的UDF,注册它,然后为dataframe中的每一行调用这个UDF。UDF如下:
def executeRestApi(param1,param2):
dlist=[]
try:
print(DataUrl.format(token=TOKEN, q1=param1,q2=param2))
response=requests.get(DataUrl.format(token=TOKEN, oid=param1,wid=param2))
if(response.status_code==200):
metrics=response.json()['data']['metrics']
dic={}
dic['metric1'] = metrics['metric1']
dic['metric2'] = metrics['metric2']
dlist.append(dic)
pandas.DataFrame(dlist).to_csv("../../dbfs/mnt/raw/Important/MetricData/listofmetrics.csv",header=True,index=False,mode='x')
return "Success"
except Exception as e:
return "Failure"
注册 UDF:
udf_executeRestApi = udf(executeRestApi, StringType())
最后以这种方式调用 UDF
paramDf.withColumn("result",udf_executeRestApi(col("param1"),col("param2"))
我在调用 UDF 时没有看到任何错误,实际上 UDF 正确返回值“Success”。 唯一的问题是文件没有写入 Azure BLOB 存储,无论我尝试什么。 UDF' 主要用于自定义功能(并返回一个值)。但是,就我而言,我正在尝试使用 UDF 执行 GET API 调用和写入操作(这是我的主要意图)。
我的 pandas.DataFrame().tocsv() 没有问题,因为同一行,当单独尝试时,使用一个简单的列表正确地将数据写入 BLOB。
这里可能出了什么问题?
注意:Env 是 Databricks 上的 Spark。 缩进没有任何问题,尽管它在这里看起来不整洁。
尝试在 dataframe 上调用display
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.