Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spark Sql:从excel工作表加载文件(扩展名为.xlsx)无法正确推断日期类型列的架构_Excel_Scala_Apache Spark_Apache Spark Sql - Fatal编程技术网

Spark Sql:从excel工作表加载文件(扩展名为.xlsx)无法正确推断日期类型列的架构

Spark Sql:从excel工作表加载文件(扩展名为.xlsx)无法正确推断日期类型列的架构,excel,scala,apache-spark,apache-spark-sql,Excel,Scala,Apache Spark,Apache Spark Sql,我有一个xlsx文件,其中包含以下格式的日期/时间文件(我的时间)和样本记录- 5/16/2017 12:19:00 AM 5/16/2017 12:56:00 AM 5/16/2017 1:17:00 PM 5/16/2017 5:26:00 PM 5/16/2017 6:26:00 PM 我以以下方式读取xlsx文件:- val inputDF = spark.sqlContext.read.format("com.crealytics.spark.excel") .option(

我有一个xlsx文件,其中包含以下格式的日期/时间文件(我的时间)和样本记录-

5/16/2017 12:19:00 AM
5/16/2017 12:56:00 AM
5/16/2017 1:17:00 PM
5/16/2017 5:26:00 PM
5/16/2017 6:26:00 PM
我以以下方式读取xlsx文件:-

val inputDF = spark.sqlContext.read.format("com.crealytics.spark.excel")
    .option("location","file:///C:/Users/file.xlsx")
    .option("useHeader","true")
    .option("treatEmptyValuesAsNulls","true")
    .option("inferSchema","true")
    .option("addColorColumns","false")
    .load()
当我尝试使用以下方法获取架构时:-

inputDF.printSchema()
,我得到双份。 有时,甚至我也将模式作为字符串。 当我打印数据时,我得到的输出是:-

------------------
My Time
------------------
42871.014189814814
42871.03973379629
42871.553773148145
42871.72765046296
42871.76887731482
------------------
对于给定的输入,上述输出显然不正确

此外,如果我将xlsx文件转换为csv格式并读取它,则可以正确获得输出。以下是我以csv格式阅读的方式:-

spark.sqlContext.read.format("csv")
      .option("header", "true")
      .option("inferSchema", true)
      .load("file:///C:/Users/file.xlsx")
因此,在这方面的任何帮助,如何推断日期类型的任何列的正确模式

注:- Spark版本是2.0.0
使用的语言是Scala

这些输出是正确的时间。它们是excel在其日期序列中存储日期和时间的方式。当单元格格式为日期、时间或自定义时,这些值将仅显示日期、时间或它们的某些组合,具体取决于自定义。小数点前的部分是自给定日期起的天数,1900年1月1日或1905年1月1日,具体取决于PC/Mac系统(如果我没记错的话)。小数点后的部分是时间或24小时的分数。这些输出是正确的时间。它们是excel在其日期序列中存储日期和时间的方式。当单元格格式为日期、时间或自定义时,这些值将仅显示日期、时间或它们的某些组合,具体取决于自定义。小数点前的部分是自给定日期起的天数,1900年1月1日或1905年1月1日,具体取决于PC/Mac系统(如果我没记错的话)。小数点后的部分是时间或24小时的分数。