在 Sparklyr (spark_read_csv) 中指定 col 类型
Posted
技术标签:
【中文标题】在 Sparklyr (spark_read_csv) 中指定 col 类型【英文标题】:Specifying col type in Sparklyr (spark_read_csv) 【发布时间】:2017-08-17 14:37:31 【问题描述】:我正在使用 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 指定列类型?
提前致谢。
【问题讨论】:
【参考方案1】: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
要操作日期类型,您必须使用 hive date functions,而不是 R 函数。
mycsv %>% mutate(birthyear = year(birthdate))
参考:https://spark.rstudio.com/articles/guides-dplyr.html#hive-functions
【讨论】:
对 bigint / int64 /long 有什么想法吗? @nachti 翻译在这里完成github.com/rstudio/sparklyr/blob/… 你可以看到没有长类型。【参考方案2】:我们在官方 sparklyr 网站的一篇文章中提供了一个示例,链接如下:http://spark.rstudio.com/example-s3.html#data_import
【讨论】:
404 - 死链接以上是关于在 Sparklyr (spark_read_csv) 中指定 col 类型的主要内容,如果未能解决你的问题,请参考以下文章
Sparklyr - 在 spark-submit 中更改日志级别
在 sparklyr 中将 12 小时制转换为 24 小时制