Невозможно запустить искровой код из локальной сети с помощью подключения блоков данных, требование не выполнено: df не является PartitionPreservingRDDScanDataFrame - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть код ниже, который работает на ноутбуке Databricks (SCALA). В этом коде я просто читаю данные из распределенной файловой системы и передаю их в библиотеку, которая выполняет анализ временных рядов. Но когда я запускаю один и тот же код с использованием блоков данных, я получаю исключение ниже.

java .lang.IllegalArgumentException: требование не выполнено: df не является PartitionPreservingRDDScanDataFrame

Мне стало известно, что упорядочение / сортировка по действию в DataFrame не выполняется сохранить раздел. Первое, что делает этот API, это сортировка ваших данных.

Мои вопросы

  1. Как мы можем сохранить раздел даже после сортировки DataFrame?

  2. если мы не можем сохранить раздел, как этот код работает на ноутбуке?

Код

 val spark = SparkSession
			.builder()
			.appName(appName)
			.getOrCreate() 
      
 val dataFrame = spark.read
			.option("header", "true")
			.option("sep", ";")
			.option("encoding", encoding)
			.schema(schema)
			.csv("path to csv")
 val transformedData = dataFrame.withColumn("time",    
      to_timestamp(col("TimeStamp"))
      
 println(transformedData.count())
 
 val rdds = TimeSeriesRDD.fromDF(transformedData)(isSorted = false, timeUnit = MILLISECONDS)

Здесь стоит отметить

  1. мой код выдает результат для count ()

  2. Я использую версию 2.4 scala 2.11

  3. Я использую sbt для создания своего кода

...