PySpark将dataframe写入本地文件,只生成文件夹含有SUCCESS

  1. 代码
results = res.rdd\
          .map(lambda word: (word[0].replace(u"(", u"(").replace(u")", u")"), word[1], word[2]))\
          .filter(lambda word: word[0] in companys_list)\
          .map(lambda word: (companys_dic.get(word[0], word[0]),word[1], word[2]))\
          .filter(lambda word: word[1] != None and word[1] != u'None')
 
schemaString = "company_name,query,keyword"
fields = list(map(lambda fieldName : StructField(fieldName, StringType(), nullable = True), schemaString.split(",")))
schema = StructType(fields)
results_df = self.spark.createDataFrame(results, schema).distinct()
 
#results_df.show(100)
output_file = "file:///home/spark/query_20200520_uniq.csv"
results_df.write.mode("overwrite").options(header="true").csv(output_file, sep='\t')

但是运行结束只得到一个文件夹,并没有得到期望的结果,查阅资料发现保存到本地文件系统(file:///)只有再local模式下才能生效,在cluster模式下(不论是yarn-client还是yarn-cluster)都无法使用。

因此需要修改运行脚本,设置--master local[*] 。最终得到了期望的数据。

你可能感兴趣的:(PySpark将dataframe写入本地文件,只生成文件夹含有SUCCESS)