2016-10-10 88 views
2

我是Apache Spark中的初学者,所以请原谅,如果这很简单。Spark Shell导入正常,但在引用类时引发错误

基本上,我是跑在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.apa‌​che.hadoop.io.NullWritable; 
... 

val rdd = sc.hadoopFile(path, 
    classOf[org.apache.hadoop.hive.ql.io.orc.OrcInputFor‌​mat], 
    classOf[NullWritable], 
    classOf[OrcStruct], 
    1) 

import语句截至OrcInputFormat正常工作,不同之处在于:

error: object apa‌​che is not a member of package org import org.apa‌​che.hadoop.io.NullWritable;

这没有意义,如果之前的导入声明没有发生任何问题。

此外,引用OrcInputFormat的时候,有人告诉我:

error: type OrcInputFor‌​mat is not a member of package org.apache.hadoop.hive.ql.io.orc

看来奇怪的是,进口为OrcInputFormat工作(我假设它的作品,因为不会引发错误),但随后上述错误消息出现。基本上,我正在尝试从S3读取ORC文件。

我也在看我做错了什么,以及为什么发生这种情况。

我做了什么:

  1. 我曾试图与--jars选项运行spark-shell,并试图导入hadoop-common-2.6.0.jar(我现在的星火版本是1.6.1,用Hadoop 2.6编译)
  2. Read ORC files directly from Spark shell)引用的val df = sqlContext.read.format("orc").load(PathToS3)。我尝试过S3,S3n,S3a的变种,没有任何成功。

回答

1

你有org.apeche之间的2个非打印字符在过去的进口,肯定由于复制粘贴:

import org.apa‌​che.hadoop.io.NullWritable; 

就重写了最后import语句,它会工作。你也不需要这些分号。

你有同样的问题与OrcInputFormat:

error: type OrcInputFor‌​mat is not member of package org.apache.hadoop.hive.ql.io.orc 

这很有趣,在#1的移动版本,我们可以看到中邦的非打印字符:

enter image description here

+0

谢谢!这是一个相当偷偷摸摸的...虽然这似乎并没有解决'错误:类型OrcInputFor mat不是包org.apache.hadoop.hive.ql.io.orc'的成员,不幸... – Stanley

+0

请参阅我的更新,相同的问题和解决方案!请接受/投票我的答案,如果它帮助你,谢谢 – cheseaux

相关问题