簡體   English   中英

pandas to_csv function 從 Spark UDF 調用時不寫入 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM