用标题中的点修剪数据帧值

时间:2016-12-20 21:05:06

标签: apache-spark spark-dataframe

我正在阅读带有标题''的输入文件。 'dot as DataFrame。我在尝试修剪该文件中的值时遇到问题。

示例testCode:

val sqc = new SQLContext(getLocalSparkContext())
import sqc.implicits.localSeqToDataFrameHolder
import org.apache.spark.sql.functions._
val testDataFrame = Seq((" test data ", " dummy data ", " a multi word string  ")).toDF("col1", "col. 2", "col3")
testDataFrame.withColumn("col. 2", trim(testDataFrame("`col. 2`"))).show()
testDataFrame.withColumn("col1", trim(testDataFrame("col1"))).show()

如果我尝试执行上面的代码,我就会

  

无法解决'col。 2'给定输入列col1,col。 2,col3;   org.apache.spark.sql.AnalysisException:无法解析'col。 2'给出   输入列col1,col。 2,col3;

就在这一行:testDataFrame.withColumn("col1", trim(testDataFrame("col1"))).show()

令人惊讶的是,

testDataFrame.withColumn("col. 2", trim(testDataFrame("`col. 2`"))).show()

通过。 我甚至试图将列替换为:

testDataFrame.withColumnRenamed("col. 2", "`col. 2`").show()

仍然得到同样的例外。对此有何帮助?

1 个答案:

答案 0 :(得分:0)

试试这个:

val t1 = testDataFrame.withColumn(“tmp”,trim(col(“col. 2”)))。drop(testDataFrame(“col. 2”))

val t2 = t1.withColumn(“col .2”,t1(“tmp”))。drop(t1(“tmp”))