【发布时间】:2016-06-15 01:37:57
【问题描述】:
我有 100 个 Excel (*.xlsx) 文件存储在 HDFS 中。 这100个*.xlsx文件被组织成10个目录,如下图:
/user/cloudera/raw_data/dataPoint1/dataPoint.xlsx
/user/cloudera/raw_data/dataPoint2/dataPoint.xlsx
...
..
.
/user/cloudera/raw_data/dataPoint10/dataPoint.xlsx
使用
从上面读取 *.xlsx 文件之一rawData = sc.textFile("/user/cloudera/raw_data/dataPoint1/dataPoint.xlsx")
抛出乱码!
我收到的一个明显建议是使用Gnumeric 电子表格应用程序的命令行实用程序ssconvert:
$ ssconvert dataPoint.xlsx dataPoint.csv
然后将其转储到 HDFS 中,这样我就可以直接读取 *.csv 文件了。 但这不是我想要解决的问题,也不是要求。
Python(首选)和Java 中的解决方案将不胜感激。我是菜鸟,所以详细的演练会很有帮助。
提前致谢。
【问题讨论】:
-
我会加载每个文件,用 xlrd pypi.python.org/pypi/xlrd 处理它,然后合并所有数据。
-
@TomRon 当你说处理它时,你的意思是将工作表数据提取到 python 列表,然后将列表加载到 RDD?
-
尝试使用 Pandas 描述的 (stackoverflow.com/questions/9884353/xls-to-csv-convertor) 转换为 csv 然后加载到 Spark RDD
标签: java python-3.x hadoop apache-spark pyspark