Convert List[Map] to spark dataframe












-1















I want to convert List[Map] to a spark dataframe,the keys of
Map are sname,the keys of Map are DataFrame's columns










share|improve this question



























    -1















    I want to convert List[Map] to a spark dataframe,the keys of
    Map are sname,the keys of Map are DataFrame's columns










    share|improve this question

























      -1












      -1








      -1








      I want to convert List[Map] to a spark dataframe,the keys of
      Map are sname,the keys of Map are DataFrame's columns










      share|improve this question














      I want to convert List[Map] to a spark dataframe,the keys of
      Map are sname,the keys of Map are DataFrame's columns







      apache-spark apache-spark-sql






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 23 '18 at 8:59









      user7687835user7687835

      349




      349
























          2 Answers
          2






          active

          oldest

          votes


















          0














          Here you can do this way



          val map1 = {"a"->1}
          val map2 = {"b"->2}
          val lst = List(map1,map2)
          val lstDF = lst.toDF
          lstDF.take(2).foreach(println)





          share|improve this answer

































            0














            If you already have res which is a List[Map[String,String]] :



            res: List[Map[String,String]] = List(Map(A -> a1, B -> b1, C -> c1), Map(A -> a2, B -> b2, C -> c2))


            You can do this to create you dataframe:



            //create your rows
            val rows = res.map(m => Row(m.values.toSeq:_*))

            //create the schema from the header
            val header = res.head.keys.toList
            val schema = StructType(header.map(fieldName => StructField(fieldName, StringType, true)))

            //create your rdd
            val rdd = sc.parallelize(rows)

            //create your dataframe using
            val df = spark.createDataFrame(rdd, schema)


            You can output the result with df.show() :



            +---+---+---+
            | A| B| C|
            +---+---+---+
            | a1| b1| c1|
            | a2| b2| c2|
            +---+---+---+


            Note that you can also create your schema in this way:



            val schema = StructType(
            List(
            StructField("A", StringType, true),
            StructField("B", StringType, true),
            StructField("C", StringType, true)
            )
            )





            share|improve this answer
























              Your Answer






              StackExchange.ifUsing("editor", function () {
              StackExchange.using("externalEditor", function () {
              StackExchange.using("snippets", function () {
              StackExchange.snippets.init();
              });
              });
              }, "code-snippets");

              StackExchange.ready(function() {
              var channelOptions = {
              tags: "".split(" "),
              id: "1"
              };
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function() {
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled) {
              StackExchange.using("snippets", function() {
              createEditor();
              });
              }
              else {
              createEditor();
              }
              });

              function createEditor() {
              StackExchange.prepareEditor({
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader: {
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              },
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              });


              }
              });














              draft saved

              draft discarded


















              StackExchange.ready(
              function () {
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53443444%2fconvert-listmapstring-string-to-spark-dataframe%23new-answer', 'question_page');
              }
              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              0














              Here you can do this way



              val map1 = {"a"->1}
              val map2 = {"b"->2}
              val lst = List(map1,map2)
              val lstDF = lst.toDF
              lstDF.take(2).foreach(println)





              share|improve this answer






























                0














                Here you can do this way



                val map1 = {"a"->1}
                val map2 = {"b"->2}
                val lst = List(map1,map2)
                val lstDF = lst.toDF
                lstDF.take(2).foreach(println)





                share|improve this answer




























                  0












                  0








                  0







                  Here you can do this way



                  val map1 = {"a"->1}
                  val map2 = {"b"->2}
                  val lst = List(map1,map2)
                  val lstDF = lst.toDF
                  lstDF.take(2).foreach(println)





                  share|improve this answer















                  Here you can do this way



                  val map1 = {"a"->1}
                  val map2 = {"b"->2}
                  val lst = List(map1,map2)
                  val lstDF = lst.toDF
                  lstDF.take(2).foreach(println)






                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Nov 23 '18 at 11:32









                  Srce Cde

                  1,184612




                  1,184612










                  answered Nov 23 '18 at 10:20









                  H RoyH Roy

                  16927




                  16927

























                      0














                      If you already have res which is a List[Map[String,String]] :



                      res: List[Map[String,String]] = List(Map(A -> a1, B -> b1, C -> c1), Map(A -> a2, B -> b2, C -> c2))


                      You can do this to create you dataframe:



                      //create your rows
                      val rows = res.map(m => Row(m.values.toSeq:_*))

                      //create the schema from the header
                      val header = res.head.keys.toList
                      val schema = StructType(header.map(fieldName => StructField(fieldName, StringType, true)))

                      //create your rdd
                      val rdd = sc.parallelize(rows)

                      //create your dataframe using
                      val df = spark.createDataFrame(rdd, schema)


                      You can output the result with df.show() :



                      +---+---+---+
                      | A| B| C|
                      +---+---+---+
                      | a1| b1| c1|
                      | a2| b2| c2|
                      +---+---+---+


                      Note that you can also create your schema in this way:



                      val schema = StructType(
                      List(
                      StructField("A", StringType, true),
                      StructField("B", StringType, true),
                      StructField("C", StringType, true)
                      )
                      )





                      share|improve this answer




























                        0














                        If you already have res which is a List[Map[String,String]] :



                        res: List[Map[String,String]] = List(Map(A -> a1, B -> b1, C -> c1), Map(A -> a2, B -> b2, C -> c2))


                        You can do this to create you dataframe:



                        //create your rows
                        val rows = res.map(m => Row(m.values.toSeq:_*))

                        //create the schema from the header
                        val header = res.head.keys.toList
                        val schema = StructType(header.map(fieldName => StructField(fieldName, StringType, true)))

                        //create your rdd
                        val rdd = sc.parallelize(rows)

                        //create your dataframe using
                        val df = spark.createDataFrame(rdd, schema)


                        You can output the result with df.show() :



                        +---+---+---+
                        | A| B| C|
                        +---+---+---+
                        | a1| b1| c1|
                        | a2| b2| c2|
                        +---+---+---+


                        Note that you can also create your schema in this way:



                        val schema = StructType(
                        List(
                        StructField("A", StringType, true),
                        StructField("B", StringType, true),
                        StructField("C", StringType, true)
                        )
                        )





                        share|improve this answer


























                          0












                          0








                          0







                          If you already have res which is a List[Map[String,String]] :



                          res: List[Map[String,String]] = List(Map(A -> a1, B -> b1, C -> c1), Map(A -> a2, B -> b2, C -> c2))


                          You can do this to create you dataframe:



                          //create your rows
                          val rows = res.map(m => Row(m.values.toSeq:_*))

                          //create the schema from the header
                          val header = res.head.keys.toList
                          val schema = StructType(header.map(fieldName => StructField(fieldName, StringType, true)))

                          //create your rdd
                          val rdd = sc.parallelize(rows)

                          //create your dataframe using
                          val df = spark.createDataFrame(rdd, schema)


                          You can output the result with df.show() :



                          +---+---+---+
                          | A| B| C|
                          +---+---+---+
                          | a1| b1| c1|
                          | a2| b2| c2|
                          +---+---+---+


                          Note that you can also create your schema in this way:



                          val schema = StructType(
                          List(
                          StructField("A", StringType, true),
                          StructField("B", StringType, true),
                          StructField("C", StringType, true)
                          )
                          )





                          share|improve this answer













                          If you already have res which is a List[Map[String,String]] :



                          res: List[Map[String,String]] = List(Map(A -> a1, B -> b1, C -> c1), Map(A -> a2, B -> b2, C -> c2))


                          You can do this to create you dataframe:



                          //create your rows
                          val rows = res.map(m => Row(m.values.toSeq:_*))

                          //create the schema from the header
                          val header = res.head.keys.toList
                          val schema = StructType(header.map(fieldName => StructField(fieldName, StringType, true)))

                          //create your rdd
                          val rdd = sc.parallelize(rows)

                          //create your dataframe using
                          val df = spark.createDataFrame(rdd, schema)


                          You can output the result with df.show() :



                          +---+---+---+
                          | A| B| C|
                          +---+---+---+
                          | a1| b1| c1|
                          | a2| b2| c2|
                          +---+---+---+


                          Note that you can also create your schema in this way:



                          val schema = StructType(
                          List(
                          StructField("A", StringType, true),
                          StructField("B", StringType, true),
                          StructField("C", StringType, true)
                          )
                          )






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Jan 30 at 13:37









                          Mohamed_RaedMohamed_Raed

                          11




                          11






























                              draft saved

                              draft discarded




















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid



                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.


                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function () {
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53443444%2fconvert-listmapstring-string-to-spark-dataframe%23new-answer', 'question_page');
                              }
                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              這個網誌中的熱門文章

                              Academy of Television Arts & Sciences

                              L'Équipe

                              1995 France bombings