xxx не является допустимым внешним типом для схемы строки - PullRequest
0 голосов
/ 25 апреля 2018

Я пытаюсь использовать функцию 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]
...