Я пытаюсь выбрать несколько столбцов из фреймворка (язык scala). Проблема в том, что я не могу поместить все столбцы в одну строку и перейти к функции выбора DataFrame. Я попытался следующие, но он не работает:Spark DataFrame AnalysisException
scala> val str1 = "sum(\"bal1\")/100,"
str1: String = sum("bal1")/100,
scala> val str2 = "sum(\"bal12\")/100,"
str1: String = sum("bal2")/100,
scala> val str3 = str1.concat(str2)
str3: String = sum("bal1")/100,sum("bal2")/100
peopleDataFrame.select(str3).show // Throws AnalysisException as mentioned below
scala> peopleDataFrame.select(str3).show
org.apache.spark.sql.AnalysisException: cannot resolve 'sum("bal1")/100,sum("bal2")/100' given input columns name, bal1, bal2;
Полный фрагмент кода:
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val people = sc.textFile("hdfs://quickstart.cloudera:8020/user/sekar/1.txt")
val schemaString = "name,bal1,bal2"
import org.apache.spark.sql.Row;
import org.apache.spark.sql.types.{StructType,StructField,IntegerType};
val schema =
StructType(
schemaString.split(",").map(fieldName => StructField(fieldName, IntegerType, true)))
val rowRDD = people.map(_.split(",")).map(p => Row(p(0).toString, p(1).toInt, p(2).toInt))
val peopleDataFrame = sqlContext.createDataFrame(rowRDD, schema)
scala> val str1 = "sum(\"bal1\")/100,"
str1: String = sum("bal1")/100,
scala> val str2 = "sum(\"bal12\")/100,"
str1: String = sum("bal2")/100,
scala> val str3 = str1.concat(str2)
str3: String = sum("bal1")/100,sum("bal2")/100
peopleDataFrame.select(str3).show
str3 правильно разрешающие «суммы ("bal1")/100, сумма ("bal2")/100 ». Пожалуйста, дайте мне знать, как разрешить исключение AnalysiseException.
Пожалуйста, дайте мне знать, если требуется дополнительная информация. Заранее спасибо.
Можете ли вы дать образец ваших данных и желаемый результат? Не совсем понятно, что вы делаете! – eliasah