#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