通常,当我们读取R中的csv文件时,空格会自动转换为'。'。在sparkR中读取csv文件,其列中有空格
> df <- read.csv("report.csv")
> str(df)
'data.frame': 598 obs. of 61 variables:
$ LR.Number
$ Vehicle.Number
然而,当我们读sparkR同一csv文件,空间保持不变,不被火花隐式地处理
#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)
正因为如此,与列进行任何活动的原因有很多的麻烦,需要像这样打电话
head(select(df, df$`LR Number`))
我该如何明确地处理这个问题? sparkR如何隐式处理这个问题。
我使用sparkR 1.5.0版本
不确定这是否有帮助,因为分隔符表示每列是如何分开的。这里的列是“,”分隔的,每列都有一个空格。所以我有col1,col2,其中col1是'name1 name2',col2是'name1 name2' –
这个特性在普通的R中会自动处理,尝试读取一个带有空格的列名的csv文件,R会自动插入一个点(。 ) –
设置'header =“true”'和'inferSchema =“false”'跳过名称让它使用内建的或'selectExpr()'支持使用'col_name AS new_col_name',如在这个Python例子中看到的:http://stackoverflow.com/a/34077809/1457051(这可以直接推断出来)。当我使用spark时,我正在使用spark 2.x运行'sparklyr',所以我不想用旧的spark版本测试'sparkR'。您还可以使用'sql()'将CSV导入到SQL中,如https://github.com/databricks/spark-csv的“SQL”部分所示(您可以在'CREATE TABLE '电话)。 – hrbrmstr