【发布时间】:2020-08-11 00:47:01
【问题描述】:
我有一个要求,我需要在 spark/scala 中读取 excel 文件(扩展名为 .xlsx)。我需要使用从 excel 读取的数据创建一个数据框,并在其上应用/写入 sql 查询以进行一些分析。 excel 文件有一些列标题/标题,如“time_spend_company (Years)”、“average_monthly_hours (hours)”等,作为标题本身的空格,这些空格会导致我在加载的数据帧上应用任何 sql 查询的问题。
我正在使用 com.crealytics.spark.excel 库来解析 excel 内容,我的代码如下所示
val empFile = "C:\\EmpDatasets.xlsx"
val employeesDF = sc.sqlContext.read
.format("com.crealytics.spark.excel")
.option("sheetName", "Sheet1")
.option("useHeader", "true")
.option("treatEmptyValuesAsNulls", "false")
.option("inferSchema", "false")
.option("location", empFile)
.option("addColorColumns", "False")
.load()
employeesDF.createOrReplaceTempView("EMP")
我想在这些列上应用一些 group by 和其他聚合函数,我遇到了这些列的问题,如下所示,我的要求是在 time_spent_company 列上应用 group by 并获得计数它。
val expLevel = sc.sqlContext.sql("Select 'time_spend_company (Years)' as 'Years_spent_in_company',count(1) from EMP where left_company = 1 group by 'time_spend_company (Years)'")
expLevel.show
我需要帮助:-
- 有没有更好的方法来加载 Excel 并为其分配自定义列名并创建数据框?
- 如何为这些包含空格的列名编写 sql 查询?
注意:我只需要将其读取为 excel 文件,我无法转换为 csv 或任何其他文件格式。
【问题讨论】:
标签: scala apache-spark dataframe spark-dataframe