在 sparkR 中读取一个 csv 文件,其中列有空格

Read a csv file in sparkR where columns have spaces

通常情况下,当我们在 R 中读取 csv 文件时,space 会自动转换为 '.'

> df <- read.csv("report.csv")
> str(df)
'data.frame':   598 obs. of  61 variables:
 $ LR.Number   
 $ Vehicle.Number   

然而,当我们在 sparkR 中读取同一个 csv 文件时,space 保持不变,不会被 spark

隐式处理
#To read a csv file
df <- read.df(sqlContext, path = "report.csv", source = "com.databricks.spark.csv", inferSchema = "true", header="true")
printSchema(df)

root
 |-- LR Number: string (nullable = true)
 |-- Vehicle Number: string (nullable = true)

因此,对列执行任何 activity 会造成很多麻烦,需要像这样调用

head(select(df, df$`LR Number`))

我该如何明确处理这个问题? sparkR 如何隐式处理这个问题。

我使用的是sparkR 1.5.0版本

作为解决方法,您可以使用以下伪代码

colnames_df<-colnames(df)
colnames_df<-gsub(" ","_",colnames_df)

colnames(df)<-colnames_df

另一种解决方案是将文件保存在某处并使用 read.df()

读取

以下对我有用

df = collect(df)
colnames_df<-colnames(df)
colnames_df<-gsub(" ","_",colnames_df)
colnames(df)<-colnames_df
df <- createDataFrame(sqlContext, df)
printSchema(df)

这里需要先在本地采集数据,将spark data frame转为普通的R data frame。我怀疑这是否是一个好的解决方案,因为我不想叫对方付费。但是我调查发现,即使要使用 ggplot 库,我们也需要将其转换为本地数据框