gpt4 book ai didi

scala - 通过 Scala IDE 使用 spark sql

转载 作者:可可西里 更新时间:2023-11-01 16:40:40 27 4
gpt4 key购买 nike

我想试试 spark sql ,我一开始用的是 bin/spark-shell插入此代码

val sqlcontext=new org.apache.spark.sql.SQLContext(sc)

val data=sc.textFile("hdfs://localhost:9000/cars.csv")
val mapr=data.map (p => p.split(','))
val MyMatchRDD=mapr.map(p =>MyMatch(p(0).toString(),p(1).toString(),p(2).toString(),
p(3).toString(),p(4).toString(),p(5).toString(),p(6).toString(),p(7).toString(),
p(8).toString()))

import sqlcontext.implicits._
val personDF=MyMatchRDD.toDF()
personDF.registerTempTable("Person")
val res = sqlcontext.sql("SELECT * FROM Person")
res.collect().foreach(println)

我没有遇到任何问题,一切都很好。但是当我使用 scala ide我在 pom 文件中使用 (maven)

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.10</artifactId>
<version>1.3.0</version>
</dependency>

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-catalyst_2.10</artifactId>
<version>1.3.0</version>
</dependency>

<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.10</artifactId>
<version>1.3.0</version>
</dependency>

我用的是同一个代码

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext._
import org.apache.spark.SparkContext
import org.apache.spark.sql.SQLContext
import org.slf4j.Logger
import org.slf4j.LoggerFactory;

object SparkSQL {
case class MyMatch( col1: String, col2: String,col3: String, col4 :String ,col5: String,
col6: String,col7 :String ,col8: String,
col9: String)

def main(args:Array[String]) {
val sparkConf = new SparkConf().setAppName("HiveFromSpark").setMaster("local")
val sc = new SparkContext(sparkConf)
val sqlcontext=new org.apache.spark.sql.SQLContext(sc)

val data=sc.textFile("hdfs://localhost:9000/cars.csv")
val mapr=data.map (p => p.split(','))
val MyMatchRDD=mapr.map(p =>MyMatch(p(0).toString(),p(1).toString(),p(2).toString(),p(3).toString(),
p(4).toString(),p(5).toString(),p(6).toString(),p(7).toString(),
p(8).toString()) )

import sqlcontext.implicits._
val personDF=MyMatchRDD.toDF()
personDF.registerTempTable("Person")
val res = sqlcontext.sql("SELECT * FROM Person")
res.collect().foreach(println)
}
}

我遇到了这个问题

Exception in thread "main" scala.reflect.internal.MissingRequirementError: class org.apache.spark.sql.catalyst.ScalaReflection in JavaMirror with primordial classloader with boot classpath [D:\scala-SDK-4.4.1-vfinal-2.11-win32.win32.x86_64\eclipse\plugins\org.scala-

预先感谢您的帮助

最佳答案

您使用的 Scala 版本有误 - Spark 是使用 Scala 2.10 版编译的。检查您的运行时和编译器 Scala 版本。

为什么要使用这么旧的依赖项? Spark 现在有 2.0.2 版本和 Scala 2.11

建议的操作:

  1. (可选)更改 <version>1.3.0</version><version>2.0.2</version>
  2. 在您的 Scala 编译器中,将版本更改为 2.11(如果更新到 Spark 2)或 2.10(如果您仍在使用 Spark 1)
  3. 确保您的计算机上安装了正确的 Scala 版本 - Spark 2 为 2.11,Spark 1 为 2.10。您可以通过输入 scala -version 查看 Scala 版本。在控制台
  4. 确保您的 Scala IDE 支持所选的 Scala 版本

关于scala - 通过 Scala IDE 使用 spark sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41382692/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com