Можем ли мы написать общий динамический код Scala / Spark - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь создать код Spark Scala, который может читать любой файл с разным количеством столбцов.Могу ли я динамически написать код scala / spark, скомпилировать и выполнить его.мне действительно нужно SBT.Какой идеальный способ достичь этой цели.

когда я запускаю scala-код с использованием скрипта оболочки или scalac code.scala, он говорит:

hadoop@namenode1:/usr/local/scala/examples$ ./survey.sh 
/usr/local/scala/examples/./survey.sh:6: error: not found: value spark
val survey = spark.read.format("com.databricks.spark.csv").option("header","true").option("nullValue","NA").option("timestampFormat","yyyy-MM-dd'T'HH:mm:ss").option("mode","failfast").option("inferchema","true").load("/tmp/survey.csv")
             ^
/usr/local/scala/examples/./survey.sh:19: error: not found: type paste
:paste
 ^
/usr/local/scala/examples/./survey.sh:37: error: not found: value udf
val parseGenderUDF = udf( parseGender _ )
                     ^
three errors found

Я хочу что-то вроде

, чтобы динамически генерировать код file.scala с использованием скрипта оболочкизавершите его, используя

scalac file.scala

, затем выполните его

scala file.scala

Но возможно ли это.как это сделать.

hadoop@namenode1:/usr/local/spark/examples/src/main/scala/org/apache/spark/examples$ cat Survey.scala 
import org.apache.spark.sql.{SparkSession}

object Survey {
   def main(args: Array[String]) {
val spark= SparkSession.builder
  .master("local")
  .appName("Survey")
  .getOrCreate()

val survey = spark.read.format("com.databricks.spark.csv").option("header","true").option("nullValue","NA").option("timestampFormat","yyyy-MM-dd'T'HH:mm:ss").option("mode","failfast").option("inferchema","true").load("/tmp/survey.csv")
survey.show()
}
}

ошибка при выполнении

hadoop@namenode1:/usr/local/spark/examples/src/main/scala/org/apache/spark/examples$ scalac Survey.scala
    Survey.scala:1: error: object apache is not a member of package org
    import org.apache.spark.sql.{SparkSession}
               ^
    Survey.scala:5: error: not found: value SparkSession
    val spark= SparkSession.builder
               ^
    two errors found
    hadoop@namenode1:/usr/local/spark/examples/src/main/scala/org/apache/spark/examples$ 

Ответы [ 3 ]

0 голосов
/ 17 октября 2018

вам нужно создать пример sparkSession:

import org.apache.spark.sql.{SparkSession}
val spark= SparkSession.builder
  .master("local")
  .appName("MYAPP")
  .getOrCreate()

val survey = spark.read.format("com.databricks.spark.csv").option("header","true").option("nullValue","NA").option("timestampFormat","yyyy-MM-dd'T'HH:mm:ss").option("mode","failfast").option("inferchema","true").load("/tmp/survey.csv")

// для udf вам нужно

import org.apache.spark.sql.functions._
val parseGenderUDF = udf( parseGender _ )

надеюсь, это поможет вам

0 голосов
/ 27 октября 2018

Я нашел альтернативу ( крикет-007 )

spark-shell -i survey.scala

Но на настройку spark-shell требуется время.

и это не то, что я хочу

0 голосов
/ 17 октября 2018

Для отправки искровых заданий вы должны использовать команду spark-submit или выполнить сценарии scala в spark-shell . Apache Livy также предоставляет REST API для отправки заданий на спарк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...