как разбить несколько столбцов на количество строк в java spark?

#java #apache-spark

#java #apache-spark

Вопрос:

это мой вклад

 sno var1 var2 var3
1  a|b x|y p|q
2 a1|b1|c1 x1|y1|z1 p1|q1|r1
 

я хотел бы разбить все столбцы на отдельные строки, не нарушая sno, если я использую explode несколько раз, я получаю повторяющиеся строки

ожидаемый:

 sno var1 var2 var3
1 a x p
1 b y q
2 a1 x1 p1
2 a2 x2 p2
3 a3 x3 p3
 

но я получаю, как показано ниже

 sno var1 var2 var3
1 a 
1 b
1 x
1 y
1 p 
1 q
2 a1
2 b1
2 c1
.....
 

как я могу это исправить. Я ищу разрешение в java spark.

Комментарии:

1. Кажется, вы приложили некоторые усилия, если вы предоставите свой код для синтаксического анализа, мы могли бы помочь вам правильно его изменить

Ответ №1:

Я выполнил это следующим образом.

 df = df.withColumn("var_arr",functions.explode(functions.arrays_zip(
functions.split(df.col("var1","\|"),
functions.split(df.col("var2","\|"),
functions.split(df.col("var3","\|")
)));

df = df.withColumn("v1", df.col("var_arr").getItem(0));
df = df.withColumn("v2", df.col("var_arr").getItem(1));
df = df.withColumn("v3", df.col("var_arr").getItem(2));
df.show();