4

我正在使用 SpraklyR 将 csv 读入 spark

schema <- structType(structField("TransTime", "array<timestamp>", TRUE),
                 structField("TransDay", "Date", TRUE))

 spark_read_csv(sc, filename, "path", infer_schema = FALSE, schema = schema)

但是得到:

Error: could not find function "structType"

如何使用 spark_read_csv 指定列类型?

提前致谢。

4

2 回答 2

7

structType 函数来自 Scala 的 SparkAPI,在 Sparklyr 中,要指定数据类型,您必须将其作为列表传递给“column”参数,假设我们有以下 CSV(data.csv):

name,birthdate,age,height
jader,1994-10-31,22,1.79
maria,1900-03-12,117,1.32

读取相应数据的函数为:

mycsv <- spark_read_csv(sc, "mydate", 
                          path =  "data.csv", 
                          memory = TRUE,
                          infer_schema = FALSE, #attention to this
                          columns = list(
                            name = "character",
                            birthdate = "date", #or character because needs date functions
                            age = "integer",
                            height = "double"))
# integer = "INTEGER"
# double = "REAL"
# character = "STRING"
# logical = "INTEGER"
# list = "BLOB"
# date = character = "STRING" # not sure

对于操作日期类型,您必须使用配置单元日期函数,而不是 R 函数。

mycsv %>% mutate(birthyear = year(birthdate))

参考:https ://spark.rstudio.com/articles/guides-dplyr.html#hive-functions

于 2017-10-06T19:20:27.720 回答
2

我们在官方 sparklyr 网站的一篇文章中有一个如何做到这一点的例子,这里是链接:http ://spark.rstudio.com/example-s3.html#data_import

于 2017-03-24T15:21:40.470 回答