Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Scala Spark:无法将字符串转换为数据格式_Scala_Apache Spark - Fatal编程技术网

Scala Spark:无法将字符串转换为数据格式

Scala Spark:无法将字符串转换为数据格式,scala,apache-spark,Scala,Apache Spark,我无法将字符串格式转换为日期格式 val df7 = Seq(("01/01/2007 12:00:00 AM"),("01/01/2006 12:00:00 AM"), ("01/01/2008 12:00:00 AM"), ("01/01/2006 12:00:00 AM")).toDF("r1") df7.show() df7.select(col("r1"), to_d

我无法将字符串格式转换为日期格式

val df7 = Seq(("01/01/2007 12:00:00 AM"),("01/01/2006 12:00:00 AM"), ("01/01/2008 12:00:00 AM"), ("01/01/2006 12:00:00 AM")).toDF("r1")
df7.show()
df7.select(col("r1"), to_date( substring(col("r1"), 0, 11), "MM/DD/YYYY")  ).show()
请注意,在输出中,它仅转换具有2006年的字符串

+--------------------+
|                  r1|
+--------------------+
|01/01/2007 12:00:...|
|01/01/2006 12:00:...|
|01/01/2008 12:00:...|
|01/01/2006 12:00:...|
+--------------------+

+--------------------+---------------------------------------------+
|                  r1|to_date(substring(`r1`, 0, 11), 'MM/DD/YYYY')|
+--------------------+---------------------------------------------+
|01/01/2007 12:00:...|                                         null|
|01/01/2006 12:00:...|                                   2006-01-01|
|01/01/2008 12:00:...|                                         null|
|01/01/2006 12:00:...|                                   2006-01-01|
+--------------------+---------------------------------------------+
请用这条线

df7.选择(col(“r1”)至日期(子字符串(col(“r1”),0,10),“MM/dd/yyyy”)。show()
解析日期

代码中有两个更改:

  • 使用长度
    10
    而不是
    11
    来切断额外的空间
  • 格式字符串区分大小写,并使用Java的
请使用这一行

df7.选择(col(“r1”)至日期(子字符串(col(“r1”),0,10),“MM/dd/yyyy”)。show()
解析日期

代码中有两个更改:

  • 使用长度
    10
    而不是
    11
    来切断额外的空间
  • 格式字符串区分大小写,并使用Java的

    • 您不需要使用子字符串,但需要给出确切的时间戳格式

      val df7 = Seq(("01/01/2007 12:00:00 AM"),("01/01/2006 12:00:00 AM"), ("01/01/2008 12:00:00 AM"), ("01/01/2006 12:00:00 AM")).toDF("r1")
      df7.select(col("r1"), to_date($"r1", "MM/dd/yyyy hh:mm:ss aa")).show(false)
      
      +----------------------+---------------------------------------+
      |r1                    |to_date(`r1`, 'MM/dd/yyyy hh:mm:ss aa')|
      +----------------------+---------------------------------------+
      |01/01/2007 12:00:00 AM|2007-01-01                             |
      |01/01/2006 12:00:00 AM|2006-01-01                             |
      |01/01/2008 12:00:00 AM|2008-01-01                             |
      |01/01/2006 12:00:00 AM|2006-01-01                             |
      +----------------------+---------------------------------------+
      

      您不需要使用子字符串,但需要给出确切的时间戳格式

      val df7 = Seq(("01/01/2007 12:00:00 AM"),("01/01/2006 12:00:00 AM"), ("01/01/2008 12:00:00 AM"), ("01/01/2006 12:00:00 AM")).toDF("r1")
      df7.select(col("r1"), to_date($"r1", "MM/dd/yyyy hh:mm:ss aa")).show(false)
      
      +----------------------+---------------------------------------+
      |r1                    |to_date(`r1`, 'MM/dd/yyyy hh:mm:ss aa')|
      +----------------------+---------------------------------------+
      |01/01/2007 12:00:00 AM|2007-01-01                             |
      |01/01/2006 12:00:00 AM|2006-01-01                             |
      |01/01/2008 12:00:00 AM|2008-01-01                             |
      |01/01/2006 12:00:00 AM|2006-01-01                             |
      +----------------------+---------------------------------------+