Дублирующее имя столбца в спарк-чтении CSV - PullRequest
1 голос
/ 04 июня 2019

Я прочитал CSV-файл, в котором есть повторяющийся столбец.

Я хочу сохранить имя столбца в кадре данных.

Я попытался добавить эту опцию в свой конфронтекст 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

Ответы [ 2 ]

1 голос
/ 04 июня 2019

Искра исправлена, чтобы разрешить повторяющиеся имена столбцов с добавленным номером. Следовательно, вы получаете числа, добавленные к повторяющимся именам столбцов. Пожалуйста, найдите ссылку ниже

https://issues.apache.org/jira/browse/SPARK-16896

0 голосов
/ 04 июня 2019

Способ, которым вы пытаетесь установить свойство caseSensitive, действительно будет неэффективным.Попробуйте заменить:

spark.sparkContext().getConf().set("spark.sql.caseSensitive","true"); 

на:

spark.sql("set spark.sql.caseSensitive=true");

Однако это все равно предполагает, что ваши исходные столбцы имеют некоторую разницу в регистре.Если у них одинаковый корпус, они все равно будут идентичны и будут дополнены номером столбца.

...