Как создать DataFrame из коллекции List \ seq, используя spark createData Frame - PullRequest
0 голосов
/ 24 апреля 2020
#1 val tupleData = List(("Java", "20000"), ("Python", "100000"), ("Scala", "3000"))
    sc.createDataFrame(tupleData).toDF("col1","col2") // perfectly fine 
#2    val intData = List(1,2,3)   
   sc.createDataFrame(intData).toDF("col1") // this line causing compile time issue

Есть вопросы по № 2. Почему не удалось создать DataFrame для List [Int]. В # 1 я создаю список кортежей .. и могу создать DF с помощью опции createDataFrame. Этот метод принимает в тип продукта. Почему он НЕ принимает # 2 ..

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Вы можете преобразовать свои Int s в Tuple1:

createDataFrame(List(1,2,3).map(Tuple1.apply)).toDF("col")
1 голос
/ 24 апреля 2020
def createDataFrame[A <: Product : TypeTag](data: Seq[A]): DataFrame = {}

Если вы видите выше функцию createDataFrame, которая принимает только подтип Product или TypeTag.

#1 val tupleData = List(("Java", "20000"), ("Python", "100000"), ("Scala", "3000"))
    sc.createDataFrame(tupleData).toDF("col1","col2") // perfectly fine 

Tuple2 является подтипом признака Product, поэтому он принимает список tuple2 для создания фрейма данных.

#2    val intData = List(1,2,3)   
      sc.createDataFrame(intData).toDF("col1")

В этом вы передаете список типа Int & Int, не являющийся sub Тип продукта или TypeTag.

...