我读取了csv文件,该文件具有重复的列。
我想在数据框中保留列的名称。
我试图在我的sparkcontext conf spark.sql.caseSensitive 中添加此选项,并将其放置为 true ,但不幸的是,它没有任何作用。
重复的列名称为NU_CPTE。 Spark尝试通过添加列0、7的数量来重命名它
NU_CPTE0 | CD_EVT_FINANCIER | TYP_MVT_ELTR | DT_OPERN_CLI | LI_MVT_ELTR | MT_OPERN_FINC | FLSENS | NU_CPTE7
SparkSession spark= SparkSession
.builder()
.master("local[2]")
.appName("Application Test")
.getOrCreate();
spark.sparkContext().getConf().set("spark.sql.caseSensitive","true");
Dataset<Row> df=spark.read().option("header","true").option("delimiter",";").csv("FILE_201701.csv");
df.show(10);
我想要这样的结果:
NU_CPTE | CD_EVT_FINANCIER | TYP_MVT_ELTR | DT_OPERN_CLI | LI_MVT_ELTR | MT_OPERN_FINC | FLSENS | NU_CPTE
答案 0 :(得分:1)
Spark已修复,以允许重复的列名称带有附加的数字。因此,您得到的数字将附加到重复的列名称中。请找到以下链接
答案 1 :(得分:0)
您尝试设置caseSensitive属性的方式确实无效。尝试更换:
{
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**",
"/home/myname/.conan/data/range-v3/0.5.0/ericniebler/stable/package/52137beddd093ee80959d89f66348c14a1589eb7/include"
],
具有:
spark.sparkContext().getConf().set("spark.sql.caseSensitive","true");
但是,这仍然假设您的原始列在大小写上存在某种差异。如果它们具有相同的大小写,它们将仍然相同,并以列号为后缀。