通常,當我們讀取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