Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot resolve column (numeric column name) in Spark Dataframe

This is my data:

scala> data.printSchema
root
 |-- 1.0: string (nullable = true)
 |-- 2.0: string (nullable = true)
 |-- 3.0: string (nullable = true)

This doesn't work :(

scala> data.select("2.0").show

Exception:

org.apache.spark.sql.AnalysisException: cannot resolve '`2.0`' given input columns: [1.0, 2.0, 3.0];;
'Project ['2.0]
+- Project [_1#5608 AS 1.0#5615, _2#5609 AS 2.0#5616, _3#5610 AS 3.0#5617]
   +- LocalRelation [_1#5608, _2#5609, _3#5610]
        ...

Try this at home (I'm running on the shell v_2.1.0.5)!

val data = spark.createDataFrame(Seq(
  ("Hello", ", ", "World!")
)).toDF("1.0", "2.0", "3.0")
data.select("2.0").show
like image 436
Marsellus Wallace Avatar asked Mar 09 '17 14:03

Marsellus Wallace


1 Answers

The problem is you can not add dot character in the column name while selecting from dataframe. You can have a look at this question, kind of similar.

val data = spark.createDataFrame(Seq(
  ("Hello", ", ", "World!")
)).toDF("1.0", "2.0", "3.0")
data.select(sanitize("2.0")).show

def sanitize(input: String): String = s"`$input`"
like image 148
Tawkir Avatar answered Sep 30 '22 13:09

Tawkir