我正在尝试在IntelliJ IDEA中构建和运行Scala / Spark项目。
我在全局库中添加了org.apache.spark:spark-sql_2.11:2.0.0
,我的build.sbt
如下所示。
name := "test"
version := "1.0"
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.0.0"
libraryDependencies += "org.apache.spark" % "spark-sql_2.11" % "2.0.0"
我仍然收到错误消息
<{1>}下的未知神器。无法解析或编入索引
。
尝试构建项目时,错误是
错误:(19,26)未找到:输入sqlContext,val sqlContext = new sqlContext(sc)
我不知道问题是什么。如何在IntelliJ IDEA中创建Spark / Scala项目?
更新:
根据建议我更新了代码以使用spark-sql
,但它仍然无法读取csv文件。我在这做错了什么?谢谢!
Spark Session
答案 0 :(得分:1)
sql应该是大写字母,如下所示
val sqlContext = new SQLContext(sc)
对于较新版本的spark, SQLContext
已被弃用,因此我建议您使用SparkSession
val spark = SparkSession.builder().appName("testings").getOrCreate
val sqlContext = spark.sqlContext
如果您想通过代码而不是master
命令设置spark-submit
,那么您也可以设置.master
(您也可以设置configs
)
val spark = SparkSession.builder().appName("testings").master("local").config("configuration key", "configuration value").getOrCreate
val sqlContext = spark.sqlContext
<强>更新强>
查看您的示例数据
DATE|PID|TYPE
8/03/2017|10199786|O
并测试您的代码
val testdf = spark.read.csv("/Users/H/Desktop/S_CR_IP_H.dat")
testdf.show()
我的输出为
+--------------------+
| _c0|
+--------------------+
| DATE|PID|TYPE|
|8/03/2017|10199786|O|
+--------------------+
现在为.option
和delimiter
添加header
为
val testdf2 = spark.read.option("delimiter", "|").option("header", true).csv("/Users/H/Desktop/S_CR_IP_H.dat")
testdf2.show()
输出
+---------+--------+----+
| DATE| PID|TYPE|
+---------+--------+----+
|8/03/2017|10199786| O|
+---------+--------+----+
注意:我已将.master("local")
用于SparkSession
对象
答案 1 :(得分:1)
(这应该是Spark官方文档的一部分)
从build.sbt
中的配置中替换以下内容:
scalaVersion := "2.11.8"
libraryDependencies += "org.apache.spark" % "spark-core_2.11" % "2.0.0"
libraryDependencies += "org.apache.spark" % "spark-sql_2.11" % "2.0.0"
以下内容:
// the latest Scala version that is compatible with Spark
scalaVersion := "2.11.11"
// Few changes here
// 1. Use double %% so you don't have to worry about Scala version
// 2. I doubt you need spark-core dependency
// 3. Use the latest Spark version
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.2.0"
不要担心IntelliJ IDEA会告诉您以下内容:
未知神器。无法解析或编入索引
这只是你必须忍受的东西,我能找到的唯一解决方案就是......接受烦恼。
val sqlContext = new sqlContext(sc)
实际类型为SQLContext,但正如scaladoc所说:
从Spark 2.0开始,它被
SparkSession
取代。但是,为了向后兼容,我们保留了这个类。
请改用SparkSession。
使用Dataset和DataFrame API编程Spark的切入点。
请参阅Spark官方文档,阅读SparkSession和其他好东西。从Getting Started开始。 玩得开心!