Spark Shell 导入正常,但在引用类时抛出错误
Posted
技术标签:
【中文标题】Spark Shell 导入正常,但在引用类时抛出错误【英文标题】:Spark Shell Import Fine, But Throws Error When Referencing Classes 【发布时间】:2016-10-10 21:57:57 【问题描述】:我是 Apache Spark 的初学者,如果这很琐碎,请见谅。
基本上,我在spark-shell
中运行以下导入:
import org.apache.spark.sql.DataFrame, Row, SQLContext, DataFrameReader
import org.apache.spark.SparkConf, SparkContext
import org.apache.spark.sql._
import org.apache.hadoop.hive.ql.io.orc.OrcInputFormat,OrcStruct;
import org.apache.hadoop.io.NullWritable;
...
val rdd = sc.hadoopFile(path,
classOf[org.apache.hadoop.hive.ql.io.orc.OrcInputFormat],
classOf[NullWritable],
classOf[OrcStruct],
1)
直到 OrcInputFormat 的导入语句都可以正常工作,但以下情况除外:
error: object apache is not a member of package org
import org.apache.hadoop.io.NullWritable;
如果之前的 import 语句没有任何问题,那就没有意义了。
另外,在引用OrcInputFormat
时,有人告诉我:
error: type OrcInputFormat is not a member of package org.apache.hadoop.hive.ql.io.orc
import for OrcInputFormat
工作似乎很奇怪(我假设它工作,因为没有引发错误),但随后出现上述错误消息。基本上,我正在尝试从 S3 读取 ORC 文件。
我也在研究我做错了什么,以及为什么会发生这种情况。
我做了什么:
-
我尝试使用
--jars
选项运行spark-shell
,并尝试导入hadoop-common-2.6.0.jar
(我当前的Spark 版本是1.6.1,使用Hadoop 2.6 编译)
val df = sqlContext.read.format("orc").load(PathToS3)
,由 (Read ORC files directly from Spark shell) 引用。我尝试了 S3、S3n、S3a 的变体,但没有任何成功。
【问题讨论】:
【参考方案1】:您在上次导入时在 org.ape
和 che
之间有 2 个非打印字符,这肯定是由于复制粘贴:
import org.apa‌​che.hadoop.io.NullWritable;
只需重写最后一个导入语句,它就会起作用。你也不需要这些分号。
OrcInputFormat 也有同样的问题:
error: type OrcInputFor‌​mat is not member of package org.apache.hadoop.hive.ql.io.orc
这很有趣,在 *** 的移动版本中,我们可以清楚地看到那些非打印字符:
【讨论】:
谢谢!那是一个非常狡猾的...虽然这似乎无法解决error: type OrcInputFormat is not a member of package org.apache.hadoop.hive.ql.io.orc
,但不幸的是...
查看我的更新,同样的问题和同样的解决方案!如果对您有帮助,请接受/投票我的回答,谢谢以上是关于Spark Shell 导入正常,但在引用类时抛出错误的主要内容,如果未能解决你的问题,请参考以下文章
SKLabelNode 添加到类时抛出试图添加 nil 节点错误
Spark 2.0.0 在与 Hive 1.0.0 交互时抛出 AlreadyExistsException(message:Database default already exists)