pyspark:数据帧写入镶木地板
Posted
技术标签:
【中文标题】pyspark:数据帧写入镶木地板【英文标题】:pyspark: dataframes write to parquet 【发布时间】:2017-02-17 15:37:24 【问题描述】:通过 pyspark 脚本运行以加载镶木地板时出现以下错误。通过 pyspark shell 进行测试时没有问题
交互模式工作正常:
df_writer = pyspark.sql.DataFrameWriter(df)
df_writer.saveAsTable('test', format='parquet', mode='overwrite',path='xyz/test_table.parquet')
脚本模式抛出错误:
/opt/mapr/spark/spark-2.0.1//bin/spark-submit --jars /opt/mapr/spark/spark-2.0.1/-2.0.1/jars/commons-csv-1.2.jar /home/mapr/scripts/pyspark_load.py
17/02/17 14:57:06 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
Traceback (most recent call last):
File "/home/mapr/scripts/2_pyspark_load.py", line 23, in <module>
df_writer = pyspark.sql.DataFrameWriter(df)
NameError: name 'pyspark' is not defined
【问题讨论】:
【参考方案1】:您还可以以更简单的方式保存数据框:
df.write.parquet("xyz/test_table.parquet", mode='overwrite')
# 'df' is your PySpark dataframe
【讨论】:
【参考方案2】:对于我的脚本,interactive 和 spark_submit 之间的区别在于我必须导入 pyspark。比如
import pyspark
df_writer = pyspark.sql.DataFrameWriter(df)
# Rest of Code
【讨论】:
以上是关于pyspark:数据帧写入镶木地板的主要内容,如果未能解决你的问题,请参考以下文章
使用 pyspark 从 s3 位置读取镶木地板文件的文件夹到 pyspark 数据帧
Pyspark 数据框写入镶木地板而不删除 /_temporary 文件夹