scala forward reference extends over definition of value dataframe










-3














I'm trying to typecast the columns in the data frame df_trial which has all the columns as string, based on an XML file I'm trying to type cast each column.



val columnList = sXml \ "COLUMNS" "COLUMN"
val df_trial = sqlContext.createDataFrame(rowRDD, schema_allString)
columnList.foreach(i =>
var columnName = (i \ "@ID").text.toLowerCase()
var dataType = (i \ "@DATA_TYPE").text.toLowerCase()
if (dataType == "number")
print("number")
var DATA_PRECISION: Int = (i \ "@DATA_PRECISION").text.toLowerCase().toInt
var DATA_SCALE: Int = (i \ "@DATA_SCALE").text.toLowerCase().toInt;
var decimalvalue = "decimal(" + DATA_PRECISION + "," + DATA_SCALE + ")"
val df_intermediate: DataFrame =
df_trial.withColumn(s"$columnName",
col(s"$columnName").cast(s"$decimalvalue"))
val df_trial: DataFrame = df_intermediate
else if (dataType == "varchar2")
print("varchar")
var DATA_LENGTH = (i \ "@DATA_LENGTH").text.toLowerCase().toInt;
var varcharvalue = "varchar(" + DATA_LENGTH + ")"
val df_intermediate =
df_trial.withColumn(s"$columnName",
col(s"$columnName").cast(s"$varcharvalue"))
val df_trial: DataFrame = df_intermediate
else if (dataType == "timestamp")
print("time")
val df_intermediate =
df_trial.withColumn(s"$columnName", col(s"$columnName").cast("timestamp"))
val df_trial: DataFrame = df_intermediate

);









share|improve this question




























    -3














    I'm trying to typecast the columns in the data frame df_trial which has all the columns as string, based on an XML file I'm trying to type cast each column.



    val columnList = sXml \ "COLUMNS" "COLUMN"
    val df_trial = sqlContext.createDataFrame(rowRDD, schema_allString)
    columnList.foreach(i =>
    var columnName = (i \ "@ID").text.toLowerCase()
    var dataType = (i \ "@DATA_TYPE").text.toLowerCase()
    if (dataType == "number")
    print("number")
    var DATA_PRECISION: Int = (i \ "@DATA_PRECISION").text.toLowerCase().toInt
    var DATA_SCALE: Int = (i \ "@DATA_SCALE").text.toLowerCase().toInt;
    var decimalvalue = "decimal(" + DATA_PRECISION + "," + DATA_SCALE + ")"
    val df_intermediate: DataFrame =
    df_trial.withColumn(s"$columnName",
    col(s"$columnName").cast(s"$decimalvalue"))
    val df_trial: DataFrame = df_intermediate
    else if (dataType == "varchar2")
    print("varchar")
    var DATA_LENGTH = (i \ "@DATA_LENGTH").text.toLowerCase().toInt;
    var varcharvalue = "varchar(" + DATA_LENGTH + ")"
    val df_intermediate =
    df_trial.withColumn(s"$columnName",
    col(s"$columnName").cast(s"$varcharvalue"))
    val df_trial: DataFrame = df_intermediate
    else if (dataType == "timestamp")
    print("time")
    val df_intermediate =
    df_trial.withColumn(s"$columnName", col(s"$columnName").cast("timestamp"))
    val df_trial: DataFrame = df_intermediate

    );









    share|improve this question


























      -3












      -3








      -3







      I'm trying to typecast the columns in the data frame df_trial which has all the columns as string, based on an XML file I'm trying to type cast each column.



      val columnList = sXml \ "COLUMNS" "COLUMN"
      val df_trial = sqlContext.createDataFrame(rowRDD, schema_allString)
      columnList.foreach(i =>
      var columnName = (i \ "@ID").text.toLowerCase()
      var dataType = (i \ "@DATA_TYPE").text.toLowerCase()
      if (dataType == "number")
      print("number")
      var DATA_PRECISION: Int = (i \ "@DATA_PRECISION").text.toLowerCase().toInt
      var DATA_SCALE: Int = (i \ "@DATA_SCALE").text.toLowerCase().toInt;
      var decimalvalue = "decimal(" + DATA_PRECISION + "," + DATA_SCALE + ")"
      val df_intermediate: DataFrame =
      df_trial.withColumn(s"$columnName",
      col(s"$columnName").cast(s"$decimalvalue"))
      val df_trial: DataFrame = df_intermediate
      else if (dataType == "varchar2")
      print("varchar")
      var DATA_LENGTH = (i \ "@DATA_LENGTH").text.toLowerCase().toInt;
      var varcharvalue = "varchar(" + DATA_LENGTH + ")"
      val df_intermediate =
      df_trial.withColumn(s"$columnName",
      col(s"$columnName").cast(s"$varcharvalue"))
      val df_trial: DataFrame = df_intermediate
      else if (dataType == "timestamp")
      print("time")
      val df_intermediate =
      df_trial.withColumn(s"$columnName", col(s"$columnName").cast("timestamp"))
      val df_trial: DataFrame = df_intermediate

      );









      share|improve this question















      I'm trying to typecast the columns in the data frame df_trial which has all the columns as string, based on an XML file I'm trying to type cast each column.



      val columnList = sXml \ "COLUMNS" "COLUMN"
      val df_trial = sqlContext.createDataFrame(rowRDD, schema_allString)
      columnList.foreach(i =>
      var columnName = (i \ "@ID").text.toLowerCase()
      var dataType = (i \ "@DATA_TYPE").text.toLowerCase()
      if (dataType == "number")
      print("number")
      var DATA_PRECISION: Int = (i \ "@DATA_PRECISION").text.toLowerCase().toInt
      var DATA_SCALE: Int = (i \ "@DATA_SCALE").text.toLowerCase().toInt;
      var decimalvalue = "decimal(" + DATA_PRECISION + "," + DATA_SCALE + ")"
      val df_intermediate: DataFrame =
      df_trial.withColumn(s"$columnName",
      col(s"$columnName").cast(s"$decimalvalue"))
      val df_trial: DataFrame = df_intermediate
      else if (dataType == "varchar2")
      print("varchar")
      var DATA_LENGTH = (i \ "@DATA_LENGTH").text.toLowerCase().toInt;
      var varcharvalue = "varchar(" + DATA_LENGTH + ")"
      val df_intermediate =
      df_trial.withColumn(s"$columnName",
      col(s"$columnName").cast(s"$varcharvalue"))
      val df_trial: DataFrame = df_intermediate
      else if (dataType == "timestamp")
      print("time")
      val df_intermediate =
      df_trial.withColumn(s"$columnName", col(s"$columnName").cast("timestamp"))
      val df_trial: DataFrame = df_intermediate

      );






      scala apache-spark apache-spark-sql






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 11 at 16:22









      stealthyninja

      9,475103947




      9,475103947










      asked Nov 11 at 10:07









      Vamshi Manda

      1




      1






















          1 Answer
          1






          active

          oldest

          votes


















          0














          In each branch of the if-else you're using the values called df_trial before you've defined them. You'll need to rearrange the code to define them first.



          Note: the way you have it, the df_trial at the very top is not being used. Depending on what you are trying to do, you may want to change the first df_trial to a var and remove the val from the other usages. (This is probably still wrong since you will be overwriting the same variable multiple times as you loop over columnList).






          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%2f53247652%2fscala-forward-reference-extends-over-definition-of-value-dataframe%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            In each branch of the if-else you're using the values called df_trial before you've defined them. You'll need to rearrange the code to define them first.



            Note: the way you have it, the df_trial at the very top is not being used. Depending on what you are trying to do, you may want to change the first df_trial to a var and remove the val from the other usages. (This is probably still wrong since you will be overwriting the same variable multiple times as you loop over columnList).






            share|improve this answer



























              0














              In each branch of the if-else you're using the values called df_trial before you've defined them. You'll need to rearrange the code to define them first.



              Note: the way you have it, the df_trial at the very top is not being used. Depending on what you are trying to do, you may want to change the first df_trial to a var and remove the val from the other usages. (This is probably still wrong since you will be overwriting the same variable multiple times as you loop over columnList).






              share|improve this answer

























                0












                0








                0






                In each branch of the if-else you're using the values called df_trial before you've defined them. You'll need to rearrange the code to define them first.



                Note: the way you have it, the df_trial at the very top is not being used. Depending on what you are trying to do, you may want to change the first df_trial to a var and remove the val from the other usages. (This is probably still wrong since you will be overwriting the same variable multiple times as you loop over columnList).






                share|improve this answer














                In each branch of the if-else you're using the values called df_trial before you've defined them. You'll need to rearrange the code to define them first.



                Note: the way you have it, the df_trial at the very top is not being used. Depending on what you are trying to do, you may want to change the first df_trial to a var and remove the val from the other usages. (This is probably still wrong since you will be overwriting the same variable multiple times as you loop over columnList).







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Nov 12 at 6:23

























                answered Nov 12 at 5:30









                Ryan

                469615




                469615



























                    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.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • 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%2f53247652%2fscala-forward-reference-extends-over-definition-of-value-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







                    Popular posts from this blog

                    Darth Vader #20

                    How to how show current date and time by default on contact form 7 in WordPress without taking input from user in datetimepicker

                    Ondo