java.lang.NoSuchMethodError:org.apache.spark.sql.DataFrameReader.parquet
我花了一整天的时间试图解决下面解释的问题。如果有人能指出我的错误,我将非常感激 当我打包Spark Java项目并使用Spark submit运行它时,错误发生在以下代码行:java.lang.NoSuchMethodError:org.apache.spark.sql.DataFrameReader.parquet,java,maven,apache-spark,intellij-idea,Java,Maven,Apache Spark,Intellij Idea,我花了一整天的时间试图解决下面解释的问题。如果有人能指出我的错误,我将非常感激 当我打包Spark Java项目并使用Spark submit运行它时,错误发生在以下代码行: DataFrame parquetFile = sqlContext.read().parquet("s3n://" + aws_bucket_data + "/" +
DataFrame parquetFile = sqlContext.read().parquet("s3n://" +
aws_bucket_data + "/" +
aws_path);
当我在Intellij中运行同一个程序时,它运行得很好(S3没有连接问题,abd问题是指数据帧)。我用Intellij打包了这个项目。我知道在Spark 2.0.0中DataFrame被DataSet替换,但我使用的是Spark 1.6.2
16/11/15 19:51:17 INFO SharedState: Warehouse path is 'file:/usr/local/spark-1.6.2-bin-hadoop2.6/spark-warehouse'.
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.spark.sql.DataFrameReader.parquet([Ljava/lang/String;)Lorg/apache/spark/sql/DataFrame;
at org.test.Manager.run(Manager.java:55)
at org.test.Runner.main(Runner.java:24)
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 org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:729)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
这是我的POM.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.test</groupId>
<artifactId>runner</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spark.version>1.6.2</spark.version>
<jackson.version>2.8.3</jackson.version>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-scala_2.10</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>org.sedis</groupId>
<artifactId>sedis_2.10</artifactId>
<version>1.2.2</version>
</dependency>
<dependency>
<groupId>com.lambdaworks</groupId>
<artifactId>jacks_2.10</artifactId>
<version>2.3.3</version>
</dependency>
<dependency>
<groupId>com.typesafe</groupId>
<artifactId>config</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-aws</artifactId>
<version>2.6.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.53</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>build-a</id>
<configuration>
<archive>
<manifest>
<mainClass>org.test.Runner</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<finalName>runner</finalName>
</configuration>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
不包括缺少的方法(拼花地板(字符串路径)
)
public Dataset<Row> parquet(String path)
公共数据集拼花(字符串路径)
自:2.0.0以来
使用2.0.0或更高版本不包括缺少的方法(拼花地板(字符串路径)
)
public Dataset<Row> parquet(String path)
公共数据集拼花(字符串路径)
自:2.0.0以来
使用2.0.0或更高版本谢谢您的回复。我在这里()发现,
公共数据集parquet(scala.collection.Seq路径)
从1.4,0开始就受到支持。我不明白为什么我能从Intellij执行它,为什么我不能得到编译错误?你能详细说明一下你对这些疑问的回答吗?谢谢。当我在POM文件中将spark.version
更改为2.0.0时,它会要求我将DataFrame更改为Dataset。我这样做了,并再次打包了代码。当我执行它时,它会给我以下错误:[error]/usr/test/Manager.java:[66,58]不兼容的类型:java.lang.Object无法转换为org.apache.spark.sql.Row[]
关于此代码行数据集eventsRaw=sqlContext.sql(“从mydata中选择*);行[]rddRows=eventsRaw.collect()代码>。真的不明白那里发生了什么…请看我的更新。也许这会帮助我们解决这个问题。谢谢你。@duckertito,但你是在叫拼花(String)。检查此项,如果您仍有问题,请更新问题谢谢您的答复。我在这里()发现,公共数据集parquet(scala.collection.Seq路径)
从1.4,0开始就受到支持。我不明白为什么我能从Intellij执行它,为什么我不能得到编译错误?你能详细说明一下你对这些疑问的回答吗?谢谢。当我在POM文件中将spark.version
更改为2.0.0时,它会要求我将DataFrame更改为Dataset。我这样做了,并再次打包了代码。当我执行它时,它会给我以下错误:[error]/usr/test/Manager.java:[66,58]不兼容的类型:java.lang.Object无法转换为org.apache.spark.sql.Row[]
关于此代码行数据集eventsRaw=sqlContext.sql(“从mydata中选择*);行[]rddRows=eventsRaw.collect()代码>。真的不明白那里发生了什么…请看我的更新。也许这会帮助我们解决这个问题。谢谢你。@duckertito,但你是在叫拼花(String)。检查此项,如果仍有问题,请更新问题