Düzleştirmeye çalıştığım bir Dataframe'im var. İşlemin bir parçası olarak, onu patlatmak istiyorum, bu yüzden bir dizi sütunum varsa, dizinin her bir değeri ayrı bir satır oluşturmak için kullanılacaktır. Örneğin,Spark sql boş değerleri kaybetmeden nasıl patlayabilir
id | name | likes
_______________________________
1 | Luke | [baseball, soccer]
haline gelmelidir
id | name | likes
_______________________________
1 | Luke | baseball
1 | Luke | soccer
Bu benim kod
private DataFrame explodeDataFrame(DataFrame df) {
DataFrame resultDf = df;
for (StructField field : df.schema().fields()) {
if (field.dataType() instanceof ArrayType) {
resultDf = resultDf.withColumn(field.name(), org.apache.spark.sql.functions.explode(resultDf.col(field.name())));
resultDf.show();
}
}
return resultDf;
}
sorun benim verilerde, dizi kolonların bazı boş değerlere sahip olmasıdır olduğunu. Bu durumda, tüm satır silinir. Yani bu dataframe:
id | name | likes
_______________________________
1 | Luke | [baseball, soccer]
2 | Lucy | null
id | name | likes
_______________________________
1 | Luke | baseball
1 | Luke | soccer
yerine
id | name | likes
_______________________________
1 | Luke | baseball
1 | Luke | soccer
2 | Lucy | null
ben boş satırları kaybetmek kalmamak nasıl diziler patlayabilir olacak?
Ben Spark 1.5.2 ve Java kullanıyorum 8
harika görünüyor, teşekkür ederim!Bir takip sorumlum var: sütun türüm bir StructType ise ne olur? Cast (new StructType()) kullanmayı denedim, ancak veri türü uyuşmazlığı aldım: THEN ve ELSE ifadeleri hepsi aynı türde veya ortak bir türden anlaşılabilir olmalı, 'Yöntemimi olabildiğince genel bir şekilde yapmaya çalışıyorum, yani tüm sütun türlerine uyar. – alexgbelov
Ayrıca, sütun türünü almak için DataFrame.dtypes() kullanıyorum. Sütun türlerini almanın daha iyi bir yolu var mı? – alexgbelov
a) Tüm alanlarla tam şema sağlamanız gerekir. b) “dtypes” veya “schema”. – zero323