преобразовать java-список map в spark dataframe в scala

#scala #apache-spark #dataframe

#scala #apache-spark #dataframe

Вопрос:

У меня есть список на Java

 List<Map<String,Object>> list=new ArrayList<>();
Map<String, Object> map=new HashMap<String, Object>();
map.put("id", 1);
map.put("name","tom");
list.add(map);
  

Я хочу преобразовать его в spark Dataframe в scala, как это сделать?

Мой реальный случай — использовать mybatis вместо spark jdbc, потому что я думаю, что spark не использует пул, я получаю список данных с помощью mybatis и конвертирую его в spark Dataframe для вычисления.

Я знаю, что могу преобразовать scala Seq в Datafame:

  Seq((1)).toDF("id")
  

а также знать, как конвертировать java List<String> в scala Seq
Но я не знаю, как преобразовать java List<Map<String,Object>>

Ответ №1:

Список в Df:

DataFrame df = sqc.CreateDataSet(данные, кодировщики.STRING()).toDF();

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

1. ошибка компиляции: org.apache.spark.sql.Encoder[String] does not take parameters , здесь я предполагаю, что sqc — это SparkSession, данные — это список java, который я даю

2. private void start() { SparkSession spark = SparkSession.builder() .AppName(«Массив в набор данных») // .master («local») .master(«spark://10.0.100.81:7077») .getOrCreate(); Строка[] l = новая строка[] { «a», «b», «c», «d»}; Список<Строка> данных = Arrays.asList(l); Dataset<Строка> df = spark.CreateDataSet(данные, Кодировщики. STRING()); df.show(); }

3. Извините, я забыл сказать, что хочу преобразовать его в scala dataframe, но не в java dataframe. И мне нужен элемент исходного java-списка Map, а не String, например List<Map..> . Предыдущая ошибка компиляции была в файле scala