在Apache Spark中将RDD数据写入Excel文件及映射
我可以在Apache Spark中把RDD数据写入Excel文件,并且进行映射吗?这样做对吗?这样写会不会只是本地的功能,不能在集群中使用呢?
下面是给出的Python代码(这只是一个例子,用来说明我的问题,我知道这个实现可能并不实际需要):
import xlsxwriter
import sys
import math
from pyspark import SparkContext
# get the spark context in sc.
workbook = xlsxwriter.Workbook('output_excel.xlsx')
worksheet = workbook.add_worksheet()
data = sc.textFile("xyz.txt")
# xyz.txt is a file whose each line contains string delimited by <SPACE>
row=0
def mapperFunc(x):
for i in range(0,4):
worksheet.write(row, i , x.split(" ")[i])
row++
return len(x.split())
data2 = data.map(mapperFunc)
workbook.close()
这里有两个问题:
- 在'mapperFunc'中使用row这样做是对的吗?每次调用时row会增加吗?
- 在mapper函数内部使用worksheet.write()写入Excel文件是正确的吗?
如果第二个问题是对的,那请帮我解答一下我在想的疑问:我觉得工作表是在本地机器上创建的,那这样怎么工作呢?
谢谢
1 个回答
0
hadoopoffice这个库让你可以通过Spark 1.x来写Excel文件,它是通过整合ExcelOutputFormat(使用PairRdd.saveAsNewAPIHadoopFile)或者Spark 2.x的数据源API来实现的。使用这个库,你可以把文件存储到HDFS、你的本地电脑、S3或者Azure等地方...
你可以在这里找到一些例子: https://github.com/zuinnote/hadoopoffice