Не удалось создать спарк-tenorflow-коннектор, поскольку файл уже существует - PullRequest
0 голосов
/ 27 января 2019

У меня возникла проблема при создании spark-tensorflow-connector на Dataproc в GCP.

Проблема возникает при сбое одного из тестов из-за

java.lang.IllegalStateException: LocalPath /tmp/spark-connector-propagate7442350445858279141 already exists. SaveMode: ErrorIfExists

Я считаю, что проблема связана с этой частью сценария LocalWiteSuite.scala :

"Propagate" should {
   "write data locally" in {
     // Create a dataframe with 2 partitions
     val rdd = spark.sparkContext.parallelize(testRows, numSlices = 2)
     val df = spark.createDataFrame(rdd, schema)

     // Write the partitions onto the local hard drive. Since it is going to be the
     // local file system, the partitions will be written in the same directory of the
     // same machine.
     // In a distributed setting though, two different machines would each hold a single
     // partition.
     val localPath = Files.createTempDirectory("spark-connector-propagate").toAbsolutePath.toString
     // Delete the directory, the default mode is ErrorIfExists
     Files.delete(Paths.get(localPath))
     df.write.format("tfrecords")
       .option("recordType", "Example")
       .option("writeLocality", "local")
       .save(localPath)

     // Read again this directory, this time using the Hadoop file readers, it should
     // return the same data.
     // This only works in this test and does not hold in general, because the partitions
     // will be written on the workers. Everything runs locally for tests.
     val df2 = spark.read.format("tfrecords").option("recordType", "Example")
       .load(localPath).sort("id").select("id", "IntegerTypeLabel", "LongTypeLabel",
       "FloatTypeLabel", "DoubleTypeLabel", "VectorLabel", "name") // Correct column order.

     assert(df2.collect().toSeq === testRows.toSeq)
   }
 }
}

Если я правильно понял, есть два раздела набора данных, и кажется, что он пытается записать локально с тем же именем файла.

Кто-нибудь сталкивался с этой проблемой, или я пропускаюstep?

Обратите внимание, что я опубликовал похожий вопрос на GitHub

1 Ответ

0 голосов
/ 28 января 2019

У меня было ощущение, что я пропустил шаг, учитывая, что это очень ценный пакет, и что многие люди успешно установили спарк-тензор потока-соединителя:

Я не собирал Tadorflow Hadoopкак зависимость Maven, которая была четко определена на шаге 3.

Однако при построении Hadoop Tensorflow мне пришлось использовать дополнительную команду: export _JAVA_OPTIONS=-Djdk.net.URLClassPath.disableClassPathURLCheck=true, как предложено Майклом из Maven, который точно не мог найтиКласс ForkedBooter

РЕДАКТИРОВАТЬ: Проблема по-прежнему сохраняется на Dataproc

Решение:

После некоторых исследований я только что непосредственно загрузилпоследнюю версию для spark-тензор потока-разъем и установить его в соответствии с указаниями, Maven .Мне не нужно было устанавливать Tensorflow Hadoop, как предложено в Tensorflow Ecosystem .Обратите внимание, что мне удалось установить файл JAR на моем кластере Dataproc.

...