代码之家  ›  专栏  ›  技术社区  ›  CodeHunter

如果csv列标题包含空格,则在spark中将csv转换为拼花地板时会出错。

  •  2
  • CodeHunter  · 技术社区  · 7 年前

    我有csv文件,我正在使用scala中的databricks库将其转换为拼花文件。我使用以下代码:

    val spark = SparkSession.builder().master("local[*]").config("spark.sql.warehouse.dir", "local").getOrCreate()
    var csvdf = spark.read.format("org.apache.spark.csv").option("header", true).csv(csvfile)
    csvdf.write.parquet(csvfile + "parquet")
    

    现在,如果列标题中没有空间,上面的代码就可以正常工作了。但是,如果任何csv文件在列标题中有空格,它将不起作用,并错误地指出无效的列标题。我的csv文件由分隔 , .

    另外,我不能更改csv的列名的空格。列名称必须与它们的名称相同,即使它们包含最终用户给定的空格。

    你知道怎么解决这个问题吗?

    2 回复  |  直到 7 年前
        1
  •  2
  •   James Tobin    7 年前


    contains invalid character(s) among " ,;{}()\n\t="

    foo_bar fooBar

        2
  •  2
  •   Dan    7 年前

    select "foo bar" as "foo_bar" .withColumnRenamed("foo bar", "foo_bar")

    推荐文章