当前位置: 首页 > 知识库问答 >
问题:

将spark sql dataframe导出到csv时出错

蓝鸿哲
2023-03-14

为了了解如何在python中导出spark sql dataframe,我参考了以下链接

    null
df = sqlContext.createDataFrame(routeRDD, ['Consigner', 'AverageScore', 'Trips'])
df.select('Consigner', 'AverageScore', 'Trips').write.format('com.databricks.spark.csv').options(header='true').save('file:///opt/BIG-DATA/VisualCargo/output/top_consigner.csv')
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)

共有1个答案

施兴言
2023-03-14

Spark版本1.5.0-CDH5.5.1是用Scala2.10构建的--Spark<2.0的默认Scala版本。您的spark-csv是用Scala 2.10-spark-csv2.11-1.5.0.jar构建的。

请将spark-csv更新到Scala2.10版本,或者将Spark更新到Scala2.11版本。您将根据artifactId之后的数字了解Scala版本,即spark-csv2.10-1.5.0将用于Scala 2.10

 类似资料:
  • 问题内容: 我试图将使用以下查询找到的结果导出到我的桌面上的CSV中。 这是我第一次使用Elasticsearch和cURL,因此我对如何执行此操作感到困惑。 现在,当我运行此查询时,它将返回戴夫的姓名,姓氏,地址和性别,并且我想在运行查询时将结果放入桌面上的csv中。 我一直在阅读有关如何执行此链接的操作,但是我不确定如何使我的查询执行此操作-(https://docs.python.org/3

  • 我有一个脚本可以将一整串CSV输出到文件夹C:\scripts\csv。这个特定的脚本循环了所有的数据流,并计算了数据集中前100个单词的使用情况。前100个单词及其计数被添加到一个列表中,数据流被串联,然后csv应该导出。打印包含正确的信息,但脚本不输出任何文件。

  • 问题内容: 我想将从属服务器上Redis数据的子集导出到一个csv文件。我注意到在redis- cli中添加了一个新的csv输出选项,但是我找不到有关其工作方式的文档。启用该选项会将命令输出以csv格式输出到屏幕。将其转换为csv文件的最佳方法是什么? 问题答案: 前沿! 我刚刚看过源代码,它所做的只是将命令作为逗号分隔值输出到stdout。这并不奇怪。 因此,只要您在Linux上,就可以按标准方

  • 问题内容: 将它导出csv时,我只能得到Length,应该如何正确完成。 # “Length” “46” “59” “110” “47” “149” “38” “69” “32” “62” “29” “49” “31” “27” “48” “55” “42” 问题答案: 期望一个具有属性的对象(或对象列表),而命令管道生成一个字符串数组。如果将此数组供入,则将获取每个给定项目的属性(仅Length

  • 问题内容: 我正在为我的一个项目使用Elasticsearch Logstash和Kibana构建概念证明。我的仪表板的图形工作正常。我的项目的要求之一是能够下载文件(csv / excel)。在kibana中,我看到的唯一下载文件的选项是单击创建的可视化文件上的“编辑”按钮。是否可以在仪表板上添加链接,使用户无需进入编辑模式即可下载文件。其次,我想禁用/隐藏除查看仪表板之外的任何人的编辑模式。谢