如果我有压缩csvs形式的海量数据,如何将其组合到单个csv文件中(压缩输出与否无关紧要)?
我正在将其读入spark数据帧中,但是随后我被困在如何连接pyspark数据帧中。
下面是我的代码,它运行一个循环,并希望为每次循环运行附加Dataframe:
schema=StructType([])
result = spark.createDataFrame(sc.emptyRDD(), schema)
for day in range(1,31):
day_str = str(day) if day>=10 else "0"+str(day)
print 'Ingesting %s' % day_str
df = spark.read.format("csv").option("header", "false").option("delimiter", "|").option("inferSchema", "true").load("s3a://key/201811%s" % (day_str))
result = result.unionAll(df)
result.write.save("s3a://key/my_result.csv", format='csv')
这给了我错误AnalysisException: u"Union can only be performed on tables with the same number of columns, but the first table has 0 columns and the second table has 1 columns;;\n'Union\n:- LogicalRDD\n+- Relation[_c0#75] csv\n"
。有人可以帮我怎么做吗?
答案 0 :(得分:0)
这对我有用:
result=spark.createDataFrame(sc.emptyRDD(), schema_mw)
for day in range(1,31):
day_str = str(day) if day>=10 else "0"+str(day)
print 'Ingesting %s' % day_str
df = spark.read.format("csv").option("header", "false").option("delimiter", ",").schema(schema_mw).load("s3a://bucket/201811%s" % (day_str))
if result:
result = result.union(df)
else:
result = df
result.repartition(1).write.save("s3a://bucket/key-Compiled", format='csv', header=False)
这有效,但是,当我尝试在最后一步中将标头加载为true时,标头存储为一行。我不确定如何将这些标头添加为标头,而不是添加为行。