2016-12-01 12 views
1

я упомянул следующие ссылки для того, чтобы понять, как экспортировать искры SQL dataframe в питонаОшибка при экспорте искры SQL dataframe в CSV

Мой код:

Я загружаю работу с помощью spark-submit pas поют следующие банки на мастер URL

spark-csv_2.11-1.5.0.jar, commons-csv-1.4.jar 

Я получаю следующее сообщение об ошибке

df.select('Consigner', 'AverageScore', 'Trips').write.format('com.databricks.spark.csv').options(header='true').save('file:///opt/BIG-DATA/VisualCargo/output/top_consigner.csv') 
     File "/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/spark/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 332, in save 
     File "/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/java_gateway.py", line 538, in __call__ 
     File "/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 36, in deco 
     File "/opt/cloudera/parcels/CDH-5.5.1-1.cdh5.5.1.p0.11/lib/spark/python/lib/py4j-0.8.2.1-src.zip/py4j/protocol.py", line 300, in get_return_value 
    py4j.protocol.Py4JJavaError: An error occurred while calling o156.save. 


py4j.protocol.Py4JJavaError: An error occurred while calling o156.save. 
    : java.lang.NoSuchMethodError: scala.Predef$.$conforms()Lscala/Predef$$less$colon$less; 
     at com.databricks.spark.csv.util.CompressionCodecs$.<init>(CompressionCodecs.scala:29) 
     at com.databricks.spark.csv.util.CompressionCodecs$.<clinit>(CompressionCodecs.scala) 
     at com.databricks.spark.csv.DefaultSource.createRelation(DefaultSource.scala:198) 
     at org.apache.spark.sql.execution.datasources.ResolvedDataSource$.apply(ResolvedDataSource.scala:170) 
     at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:146) 
     at org.apache.spark.sql.DataFrameWriter.save(DataFrameWriter.scala:137) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at py4j.reflection.MethodInvoker.invoke(MethodInvoker.java:231) 
     at py4j.reflection.ReflectionEngine.invoke(ReflectionEngine.java:379) 
     at py4j.Gateway.invoke(Gateway.java:259) 
     at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:133) 
     at py4j.commands.CallCommand.execute(CallCommand.java:79) 
     at py4j.GatewayConnection.run(GatewayConnection.java:207) 
     at java.lang.Thread.run(Thread.java:745) 
+0

Похож на конфликт с банкой. Вероятно, некоторые зависимости от записи CSV. – LiMuBei

+0

@LiMuBei Scala версия конфликт –

ответ

3

Спарк версия 1.5.0-cdh5.5.1 построена с Scala 2.10 - по умолчанию Scala версия для Спарк < 2,0. Ваша искра-csv построена с помощью Scala 2.10 - spark-csv_ 2.11 -1.5.0.jar.

Обновите искру-csv до версии с помощью Scala 2.10 или обновите Spark до Scala 2.11. Вы узнаете версию Scala по номеру после artifactId, то есть spark-csv_2.10-1.5.0 будет для Scala 2.10

+0

искра версия: версия 1.5.0-cdh5.5.1 –

+0

@ Хардик Да, так что это конфликт в Скале. Обновите (понизите) версию spark-csv до версии 2.10 - http://search.maven.org/#artifactdetails%7Ccom.databricks%7Cspark-csv_2.11%7C1.5.0%7Cjar –

+0

Сэр, большое вам спасибо, понижение мой искр-csv jar до 2.10 работает .. однако теперь он создает несколько разделов в папке, есть ли способ контролировать это, попробовал write.repartition (1) .format ("com.databricks.spark.csv") .. ., но выдает ошибку –