首页 > 解决方案 > 在函数中保存 pyspark 数据框

问题描述

我正在尝试将 pyspark 数据帧保存到 hdfs 文件夹中。这段代码在函数之外工作正常,但是一旦我尝试将它放入函数中,我就会出错。可能是我如何引用函数参数的一个案例。谢谢您的帮助。

def save_file(df):

    start_time = time.time()

    df.createOrReplaceTempView("df") 
    hc.sql("create table hdfs_folder.{} as select * from {}".format(df,df))

    print("{} saved in hdfs_folder".format(df))

    print("**********************************")    
    print("--- %s seconds ---" % (time.time() - start_time))

save_file(py_df)

标签: pysparkpyspark-dataframes

解决方案


我认为您想要的是使用字符串df而不是变量df,如下所示:

def save_file(df):

    start_time = time.time()

    df.createOrReplaceTempView("df") 
    hc.sql("create table hdfs_folder.{} as select * from {}".format('df','df'))

    print("{} saved in hdfs_folder".format('df'))

    print("**********************************")    
    print("--- %s seconds ---" % (time.time() - start_time))

save_file(py_df)

已编辑 - 使用变量名称:

def save_file(df, name):

    start_time = time.time()

    df.createOrReplaceTempView("df") 
    hc.sql("create table hdfs_folder.{} as select * from {}".format(name,'df'))

    print("{} saved in hdfs_folder".format(name))

    print("**********************************")    
    print("--- %s seconds ---" % (time.time() - start_time))

save_file(py_df, 'py_df')

推荐阅读