例如,您可以使用 HadoopOffice 库 ( https://github.com/ZuInnoTe/hadoopoffice/wiki )。
在那里,您有以下选择:
1) 直接使用 Hive 读取 Excel 文件并将 CTAS 转换为 CSV 格式的表格 您需要部署 HadoopOffice Excel Serde
https://github.com/ZuInnoTe/hadoopoffice/wiki/Hive-Serde
然后您需要创建表格(请参阅所有选项的文档,示例从 sheet1 读取并跳过前 3 行)
create external table ExcelTable(<INSERTHEREYOURCOLUMNSPECIFICATION>) ROW FORMAT SERDE 'org.zuinnote.hadoop.excel.hive.serde.ExcelSerde' STORED AS INPUTFORMAT 'org.zuinnote.hadoop.office.format.mapred.ExcelFileInputFormat' OUTPUTFORMAT 'org.zuinnote.hadoop.excel.hive.outputformat.HiveExcelRowFileOutputFormat' LOCATION '/user/office/files' TBLPROPERTIES("hadoopoffice.read.simple.decimalFormat"="US","hadoopoffice.read.sheet.skiplines.num"="3", "hadoopoffice.read.sheet.skiplines.allsheets"="true", "hadoopoffice.read.sheets"="Sheet1","hadoopoffice.read.locale.bcp47"="US","hadoopoffice.write.locale.bcp47"="US");
然后做CTAS成CSV格式的表格:
create table CSVTable ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' AS Select * from ExcelTable;
2) 使用 Spark 根据 Spark 版本,您有不同的选择:对于 Spark 1.x,您可以使用 HadoopOffice 文件格式,对于 Spark 2.x,您可以使用Spark2 DataSource(后者还包括对 Python 的支持)。在此处查看操作方法