This is an automated email from the ASF dual-hosted git repository. fanjia pushed a commit to branch dev in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push: new b1dcd4a2bc [BugFix][Spark-translation] map type cast error (#6552) b1dcd4a2bc is described below commit b1dcd4a2bc9292f1c46571d342195e53078f7942 Author: Carl-Zhou-CN <1058249...@qq.com> AuthorDate: Thu Mar 21 13:27:33 2024 +0800 [BugFix][Spark-translation] map type cast error (#6552) --- .../src/test/resources/fake_to_assert.conf | 9 +++++++++ .../spark/serialization/SeaTunnelRowConverter.java | 20 ++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-fake-e2e/src/test/resources/fake_to_assert.conf b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-fake-e2e/src/test/resources/fake_to_assert.conf index 084ddbb533..cab504d3b8 100644 --- a/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-fake-e2e/src/test/resources/fake_to_assert.conf +++ b/seatunnel-e2e/seatunnel-connector-v2-e2e/connector-fake-e2e/src/test/resources/fake_to_assert.conf @@ -67,8 +67,17 @@ source { } } +transform { + Sql { + source_table_name = "fake" + result_table_name = "tmp1" + query = """select * from fake""" + } +} + sink { Assert { + source_table_name = "tmp1" rules { row_rules = [ { diff --git a/seatunnel-translation/seatunnel-translation-spark/seatunnel-translation-spark-common/src/main/java/org/apache/seatunnel/translation/spark/serialization/SeaTunnelRowConverter.java b/seatunnel-translation/seatunnel-translation-spark/seatunnel-translation-spark-common/src/main/java/org/apache/seatunnel/translation/spark/serialization/SeaTunnelRowConverter.java index 000e0baa06..db23d4912a 100644 --- a/seatunnel-translation/seatunnel-translation-spark/seatunnel-translation-spark-common/src/main/java/org/apache/seatunnel/translation/spark/serialization/SeaTunnelRowConverter.java +++ b/seatunnel-translation/seatunnel-translation-spark/seatunnel-translation-spark-common/src/main/java/org/apache/seatunnel/translation/spark/serialization/SeaTunnelRowConverter.java @@ -31,7 +31,7 @@ import org.apache.spark.sql.types.StructType; import org.apache.spark.unsafe.types.UTF8String; import scala.Tuple2; -import scala.collection.immutable.HashMap.HashTrieMap; +import scala.collection.immutable.AbstractMap; import scala.collection.mutable.WrappedArray; import java.io.IOException; @@ -179,7 +179,7 @@ public class SeaTunnelRowConverter extends RowConverter<SeaTunnelRow> { case STRING: return field.toString(); case MAP: - return reconvertMap((HashTrieMap<?, ?>) field, (MapType<?, ?>) dataType); + return reconvertMap((AbstractMap<?, ?>) field, (MapType<?, ?>) dataType); case ARRAY: return reconvertArray((WrappedArray.ofRef<?>) field, (ArrayType<?, ?>) dataType); default: @@ -206,23 +206,23 @@ public class SeaTunnelRowConverter extends RowConverter<SeaTunnelRow> { } /** - * Convert HashTrieMap to LinkedHashMap + * Convert AbstractMap to LinkedHashMap * - * @param hashTrieMap HashTrieMap data + * @param abstractMap AbstractMap data * @param mapType fields type map * @return java.util.LinkedHashMap - * @see HashTrieMap + * @see AbstractMap */ - private Map<Object, Object> reconvertMap(HashTrieMap<?, ?> hashTrieMap, MapType<?, ?> mapType) { - if (hashTrieMap == null || hashTrieMap.size() == 0) { + private Map<Object, Object> reconvertMap(AbstractMap<?, ?> abstractMap, MapType<?, ?> mapType) { + if (abstractMap == null || abstractMap.size() == 0) { return Collections.emptyMap(); } - int num = hashTrieMap.size(); + int num = abstractMap.size(); Map<Object, Object> newMap = new LinkedHashMap<>(num); SeaTunnelDataType<?> keyType = mapType.getKeyType(); SeaTunnelDataType<?> valueType = mapType.getValueType(); - scala.collection.immutable.List<?> keyList = hashTrieMap.keySet().toList(); - scala.collection.immutable.List<?> valueList = hashTrieMap.values().toList(); + scala.collection.immutable.List<?> keyList = abstractMap.keySet().toList(); + scala.collection.immutable.List<?> valueList = abstractMap.values().toList(); for (int i = 0; i < num; i++) { Object key = keyList.apply(i); Object value = valueList.apply(i);