сохранить фрейм данных pyspark внутри функции - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь сохранить фрейм данных 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)

1 Ответ

0 голосов
/ 20 марта 2020

Я думаю, что вы хотите использовать строку 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')
...