Я пытаюсь использовать функцию createSataframe для sparksession, и я продолжаю получать сообщение об ошибке. xxx не является допустимым внешним типом для схемы строки. xxx может быть массивами $ ArrayList и Ljava.lang.String.
Это код создания строки
Row row = RowFactory.create(new String[][] {s.split(",")});
Я делаю схему вот так
List<StructField> structfields = new ArrayList<StructField>();
for(ColumnMetaData c : metadata){
System.out.println(c.getColumnName());
structfields.add(DataTypes.createStructField( c.getColumnName(), DataTypes.StringType, false ));
}
StructType schema = DataTypes.createStructType(structfields);
И я создаю набор данных
JavaRDD<Row> rdd = sc.parallelize(all_rows);
Dataset<Row> new_ds = spark.createDataFrame(rdd,schema);
Я упоминал это , но мне кажется, что ответ не работает для меня.
Также есть бревно от искры
staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true], top level row object), 1, l_linestatus), StringType), true) AS l_linestatus#469
+- staticinvoke(class org.apache.spark.unsafe.types.UTF8String, StringType, fromString, validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true], top level row object), 1, l_linestatus), StringType), true)
+- validateexternaltype(getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true], top level row object), 1, l_linestatus), StringType)
+- getexternalrowfield(assertnotnull(input[0, org.apache.spark.sql.Row, true], top level row object), 1, l_linestatus)
+- assertnotnull(input[0, org.apache.spark.sql.Row, true], top level row object)
+- input[0, org.apache.spark.sql.Row, true]