Amazon s3 从集群将整数/字符串写入pyspark中的文本文件
我使用EMR阶跃函数来分析数据。 我想存储分析数据帧的计数,以决定是否可以将其保存为csv或拼花地板。我更喜欢CSV,但如果尺寸太大,我将无法下载并在笔记本电脑上使用它。 我使用Amazon s3 从集群将整数/字符串写入pyspark中的文本文件,amazon-s3,pyspark,amazon-emr,Amazon S3,Pyspark,Amazon Emr,我使用EMR阶跃函数来分析数据。 我想存储分析数据帧的计数,以决定是否可以将其保存为csv或拼花地板。我更喜欢CSV,但如果尺寸太大,我将无法下载并在笔记本电脑上使用它。 我使用count()方法将其存储到int变量limit 当我尝试使用以下代码时: coalesce(1).write.format("text").option("header", "false").mode("overwrite").save("output.txt") 它说: int没有任何名为write的属性 有没有一
count()
方法将其存储到int变量limit
当我尝试使用以下代码时:
coalesce(1).write.format("text").option("header", "false").mode("overwrite").save("output.txt")
它说:
int没有任何名为write的属性
有没有一种方法可以将整数或字符串写入一个文件,这样我就可以在s3存储桶中打开它,并在EMR步骤运行后进行检查
更新:
我尝试了@Shu建议的dataframe方法,但得到了以下错误
原因:org.apache.spark.sparkeException:作业因阶段而中止
失败:阶段13.0中的任务0失败4次,最近一次失败:
第13.0阶段的任务0.3丢失(TID 19396,ip-10-210-13-34.ec2.1),
执行者11):org.apache.spark.SparkException:任务在执行时失败
写行。在
org.apache.spark.sql.execution.datasources.FileFormatWriter$.org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask(FileFormatWriter.scala:257)
在
org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1.apply(FileFormatWriter.scala:170)
产生这种情况的根本原因是什么?您可以
并行化int变量以创建rdd
,然后使用.saveAsTextFile
写入HDFS
df.show()
#+---+
#| _1|
#+---+
#| a|
#| b|
#+---+
limit=df.count()
spark.sparkContext.parallelize([limit]).coalesce(1).saveAsTextFile("<path>")
#content of file
#cat <path>/part-00000
#2
我试图将其转换为数据帧并写入,但一直失败。我没有使用IntegerType()
方法。非常感谢你!
from pyspark.sql.types import *
spark.createDataFrame(spark.sparkContext.parallelize([limit]),IntegerType()).coalesce(1).write.format("csv").option("header", "false").mode("overwrite").save("<path>")
#or in text format
spark.createDataFrame(spark.sparkContext.parallelize([limit]),StringType()).coalesce(1).write.format("text").mode("overwrite").save("<path>")
#cat part-*
#2