相关疑难解决方法(0)

如何在Spark SQL的DataFrame中更改列类型?

假设我做的事情如下:

val df = sqlContext.load("com.databricks.spark.csv", Map("path" -> "cars.csv", "header" -> "true"))
df.printSchema()

root
 |-- year: string (nullable = true)
 |-- make: string (nullable = true)
 |-- model: string (nullable = true)
 |-- comment: string (nullable = true)
 |-- blank: string (nullable = true)

df.show()
year make  model comment              blank
2012 Tesla S     No comment                
1997 Ford  E350  Go get one now th...  
Run Code Online (Sandbox Code Playgroud)

但我真的想要yearas Int(并且可能会转换其他一些列).

我能想到的最好的是

df.withColumn("year2", 'year.cast("Int")).select('year2 as 'year, 'make, 'model, 'comment, 'blank)
org.apache.spark.sql.DataFrame = [year: int, …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark apache-spark-sql

143
推荐指数
12
解决办法
32万
查看次数

转换spark数据帧中的日期模式

我有一个String数据类型的火花数据框中的列(日期为yyyy-MM-dd模式)我想以MM/dd/yyyy模式显示列值

我的数据是

val df = sc.parallelize(Array(
  ("steak", "1990-01-01", "2000-01-01", 150),
  ("steak", "2000-01-02", "2001-01-13", 180),
  ("fish",  "1990-01-01", "2001-01-01", 100)
)).toDF("name", "startDate", "endDate", "price")

df.show()

+-----+----------+----------+-----+
| name| startDate|   endDate|price|
+-----+----------+----------+-----+
|steak|1990-01-01|2000-01-01|  150|
|steak|2000-01-02|2001-01-13|  180|
| fish|1990-01-01|2001-01-01|  100|
+-----+----------+----------+-----+

root
 |-- name: string (nullable = true)
 |-- startDate: string (nullable = true)
 |-- endDate: string (nullable = true)
 |-- price: integer (nullable = false)
Run Code Online (Sandbox Code Playgroud)

我想以MM/dd/yyyy模式显示endDate.我能做的就是将列从String转换为DateType

val df2 = df.select($"endDate".cast(DateType).alias("endDate"))

df2.show()

+----------+
|   endDate|
+----------+
|2000-01-01|
|2001-01-13|
|2001-01-01|
+----------+

df2.printSchema()

root
 |-- endDate: …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark spark-dataframe

4
推荐指数
1
解决办法
7470
查看次数

在Pyspark中将列类型从字符串更改为日期

我正在尝试将字符串类型从字符串更改为日期.我咨询了以下答案:

  1. 如何在DataFrames中将列类型从String更改为Date?
  2. 为什么我从date_format()PySpark函数得到null结果?

当我尝试从链接1应用答案时,我得到了null结果,所以我提到了链接2的答案,但我不明白这一部分:

output_format = ...  # Some SimpleDateFormat string
Run Code Online (Sandbox Code Playgroud)

我想直接从评论中提问,但唉,我的声誉还不够.

python pyspark

4
推荐指数
2
解决办法
5864
查看次数

Spark DataSet日期时间解析

我应该如何使用spark 2.0数据集API正确执行日期时间解析?

有很多样本用于数据帧/ RDD

一个类似的

case class MyClass(myField:java.sql.Datetime)

val mynewDf = spark.read
    .option("header", "true")
    .option("inferSchema", "true")
    .option("charset", "UTF-8")
    .option("delimiter", ",")
    .csv("pathToFile.csv")
    .as[MyClass]
Run Code Online (Sandbox Code Playgroud)

不足以施放类型.我应该如何使用数据集API正确执行此操作?

编辑

加载数据有效.例如.一个print schema节目myDateFiled: timestamp (nullable = true) 但是一个myDf.show会产生一个

java.lang.IllegalArgumentException
        at java.sql.Date.valueOf(Date.java:143)
Run Code Online (Sandbox Code Playgroud)

这让我相信我对日期的解析是不正确的.怎么会这样?

scala apache-spark apache-spark-dataset

2
推荐指数
1
解决办法
4604
查看次数